Python:在BaseHTTPRequestHandler中实现长轮询机制

Python:在BaseHTTPRequestHandler中实现长轮询机制,python,python-3.x,httpserver,long-polling,basehttprequesthandler,Python,Python 3.x,Httpserver,Long Polling,Basehttprequesthandler,我的任务是实现长轮询机制。 我需要在30秒内收集一些请求,然后针对特定请求一次性发送所有响应 def make_handler(ip1, ip2): class Server(BaseHTTPRequestHandler): protocol_version = 'HTTP/1.1' wbufsize = -1 def log_message(self, format, *args): pass

我的任务是实现长轮询机制。 我需要在30秒内收集一些请求,然后针对特定请求一次性发送所有响应

 def make_handler(ip1, ip2):
     class Server(BaseHTTPRequestHandler):
        protocol_version = 'HTTP/1.1'
        wbufsize = -1

        def log_message(self, format, *args):
           pass

        def _set_headers(self, content_length):
            self.send_response(200)
            self.send_header('Content-type', 'application/json')
            self.send_header('Connection', 'keep-alive')
            self.send_header("Content-length", content_length)
            self.end_headers()

        def _set_pubnub_headers(self, content_length):
            self.send_response(200)
            self.send_header('Content-type', 'text/javascript')
            self.send_header('Connection', 'keep-alive')
            self.send_header("Content-length", content_length)
            self.end_headers()

        def _subscribe_resp(self):
            global version
            start_date = str(time.time())
            content = json.dumps({"t": {"t": start_date, "r": 12}, "m": [{"d": {"type": "ping", "body": {"version": version}}}]}).encode()
            content_length = len(content)
            try:
                self._set_pubnub_headers(content_length)
                self.wfile.write(content)
            except socket.error as error:
                pass
            except ValueError as error:
                pass

        def _send_response(self, content):
            try:
                self._set_headers(len(content))
                self.wfile.write(content)
            except socket.error:
                pass

        def do_GET(self):
            path = self.path
            if path.startswith("/some/request"):
                work_queue.put((self._subscribe_resp, []))
            else:
                self.send_response(404)
                self.send_header('Content-type', 'application/json')
                self.send_header('Connection', 'keep-alive')
                self.send_header("Content-length", 0)
                try:
                    self.end_headers()
                except socket.error:
                    pass
  return Server

class ThreadedHTTPServer(ThreadingMixIn, HTTPServer):
   pass
当我收到请求“/some/request”时,我希望收集所有请求(我尝试使用queue进行收集),然后每30秒发送一次对所有请求的响应。 我不知道我究竟怎样才能做到。 我尝试使用从队列中获取响应函数并执行
\u subscribe\u resp
函数的任务。但答复不能以这种方式发送。请给我打电话,告诉我如何实施