Python Http服务器:当共享队列有N个项目时关闭服务器
我正在使用pythonPython Http服务器:当共享队列有N个项目时关闭服务器,python,http,simplehttpserver,Python,Http,Simplehttpserver,我正在使用pythonBaseHttpServer实现一个HTTP服务器 我有一个由不同线程共享的队列。每次我的处理程序收到请求时,它都会将其放入共享的队列中。当队列中的请求数达到n时,我想关闭服务器。以下是我现在拥有的: while self.queue.qsize() != n self.server.handle_request() 我对这种方法的担心是,当检查self.queue.qsize()时,它可能还不是n,但在这之后大小立即变为n(因为队列由多个线程共享),并且不再有
BaseHttpServer
实现一个HTTP服务器
我有一个由不同线程共享的队列
。每次我的处理程序收到请求时,它都会将其放入共享的队列中。当队列中的请求数达到n
时,我想关闭服务器。以下是我现在拥有的:
while self.queue.qsize() != n
self.server.handle_request()
我对这种方法的担心是,当检查self.queue.qsize()
时,它可能还不是n,但在这之后大小立即变为n(因为队列由多个线程共享),并且不再有后续请求。如果没有请求,server.handle\u 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()