问题描述
我有一个任务来实现长轮询机制。 我需要在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,'text/javascript')
self.send_header('Connection',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”请求时,我想收集所有请求(我尝试使用队列进行处理),然后每30秒一次发送所有请求的响应。
我不知道我该怎么做。
我尝试使用从队列中获取响应函数并执行_subscribe_resp
函数的任务。但是不能以这种方式发送响应。请给我一些想法,我应该如何实现它。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)