我有一个需要接受在前端的MSG(普通字符串),做一些处理和转换那些封邮件到需要被发送到一个HTTP请求的任务后端服务器。所以基本上有两个端点 - 前端是一个正常的BSD套接字。后端是一个urllib.HTTP连接。回应是相反的。但是,这不是一个请求响应场景。我可以有一个完全失灵req1-> req2-> resp2-> req4-> req3-> resp3-> resp1 ...异步场景的类型。因此,我不能只是做一个:的Python:异步发送/接收正常插座和HTTP连接
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连接一种选择语句。即使这是可能的,你如何分别发送和接收来自httpconnection(而不是使用单个“http.request(..)”命令)。
如果我发送的HttpConnection的一些Ajax请求,将在AJAX请求回调来,如果我挡在socketFrontEnd运行?也就是说,我们可以这样做:
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)
AJAX =异步JavaScript和XML,我敢肯定这不是你想要的。也许你只是指“异步HTTP请求”? – 2011-04-20 12:44:00