本文主要是介绍HTTPServer线程和进程,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
http://pymotwcn.readthedocs.org/en/latest/documents/BaseHTTPServer.html
线程和进程¶
HTTPServer是SocketServer.TCPServer的一个简单子类. 它不使用多线程或多进程来处理请求. 要增加多线程和多进程, 可以使用SocketServer中的合适的混用类来创建一个新的类.
from BaseHTTPServer import HTTPServer, BaseHTTPRequestHandler
from SocketServer import ThreadingMixIn
import threadingclass Handler(BaseHTTPRequestHandler): def do_GET(self):
self.send_response(200)self.end_headers()message = threading.currentThread().getName() ## 这里threading就可以自己处理self.wfile.write(message)self.wfile.write('\n')returnclass ThreadedHTTPServer(ThreadingMixIn, HTTPServer):"""Handle requests in a separate thread."""if __name__ == '__main__':server = ThreadedHTTPServer(('localhost', 8080), Handler)print 'Starting server, use <Ctrl-C> to stop'server.serve_forever()
每次当一个请求过来的时候, 一个新的线程或进程会被创建来处理它:
$ curl http://localhost:8080/
Thread-1
$ curl http://localhost:8080/
Thread-2
$ curl http://localhost:8080/
Thread-3
如果把上面的ThreadingMixIn换成ForkingMixIn, 也可以获得类似的结果, 但是后者是使用了独立的进程而不是线程.
这篇关于HTTPServer线程和进程的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!