Python Http 服务器:当共享队列有 N 个项目时关闭服务器



我正在使用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()

相关内容

  • 没有找到相关文章

最新更新