我正在使用pythonBaseHttpServer
实现HTTP服务器。
我有一个由不同线程共享的queue
。每次我的处理程序收到请求时,它都会将其放入共享queue
中。当queue
中的请求数达到n
时,我想关闭服务器。这是我现在拥有的:
while self.queue.qsize() != n
self.server.handle_request()
我对这种方法的担忧是,在检查self.queue.qsize()
时,它可能还不是 n,但之后大小立即变为 n(因为queue
由多个线程共享(,并且不再有后续请求。鉴于如果没有请求,server.handle_request()
块,服务器可能会再关闭。有没有办法解决这个问题?
将线程绑定到进程:
httpd = BaseHTTPServer.HTTPServer(('', 80), MyHandler)
print("Starting server in thread")
threading.Thread(target=httpd.serve_forever).start()
关闭:
toKill = threading.Event()
# in handler
toKill.set()
# in main thread
toKill.wait()
httpd.shutdown()