Python:在普通套接字和http连接上异步发送/接收

Python:在普通套接字和http连接上异步发送/接收,python,ajax,sockets,asynchronous,Python,Ajax,Sockets,Asynchronous,我有一个任务,需要在前端接受MSG(普通字符串),进行一些处理,并将这些MSG转换为需要发送到后端服务器的http请求。所以基本上有两个端点-前端是一个普通的BSD套接字。后端是一个urllib.HTTPconnection。反应正好相反。但是,这不是请求-响应场景。我可能会有一个完全无序的req1->req2->resp2->req4->req3->resp3->resp1。。。异步场景的类型。所以我不能只做一个: msg = socketFrontEnd.recv() ... process

我有一个任务,需要在前端接受MSG(普通字符串),进行一些处理,并将这些MSG转换为需要发送到后端服务器的http请求。所以基本上有两个端点-前端是一个普通的BSD套接字。后端是一个urllib.HTTPconnection。反应正好相反。但是,这不是请求-响应场景。我可能会有一个完全无序的req1->req2->resp2->req4->req3->resp3->resp1。。。异步场景的类型。所以我不能只做一个:

msg = socketFrontEnd.recv()
... process msg and make 'Request' 
resp, content = httpBackEnd.request("http://example.org", "PUT", body=Request)   
... process resp and make 'Response'
socketFrontEnd.send(Response)
我需要更像轮询机制的东西:

While(True):
   readysockets = select(SocketFrontEnd, httpBackEnd)

   if readysockets has SocketFrontEnd:
       msg = socketFrontEnd.recv()
       process and send request to httpBackEnd(...)

   if readysockets has httpBackEnd:
       resp = httpBackEnd(...)
       process and send response to socketFrontEnd()
然而,就我所知,我不能将http连接放在某种select语句中。即使这是可能的,您如何从httpconnection单独发送和接收(而不是使用单个“http.request(…)”命令)

如果我在httpconnection上发送一些ajax请求,如果我在socketFrontEnd上被阻塞,ajax请求中的回调会运行吗?也就是说,我们可以做一些类似于:

while(True):
    msg = socketFrontEnd.recv() <-- blocked
    ... process and make 'Request'
    ajax('callback_function', Request, 'http://backendserver.com')


Callback_function(resp):
    ... process and make Response
    socketFrontEnd.send(Response)
while(True):

msg=socketFrontEnd.recv()Python的异步内核模块不适合您的问题吗?或者像Twisted这样的框架?

AJAX=异步JavaScript和XML,我很确定这不是您想要的。也许你的意思是“异步HTTP请求”?我听说twisted很难学习-所以如果这是唯一的选择,我就必须去做。我不知道asyncore的事。我将查找它(这里仍然是python初学者)。。在docs.python.org上尝试了遵循HTTPclient的示例,但其含义尚未被理解。我会再试一次。