1
단일 요청을 보낸 후 서버에서 여러 응답을 수신 할 수 있기를 원했습니다. 이것은 모두 꼬인 상태로 구현됩니다. [서버 :Twisted에서 단일 요청에 대한 다중 응답
class HandleReq(resource.Resource):
def __init__(self):
resource.Resource.__init__(self)
def render_GET(self, request):
"""
Here I basically connect to another server and get multiple
responses"""
d = defer.Deferred()
interface = RemoteService(request, i_deferred)
self._connect_to_RemoteService(bf_command, interface)
self.handleCallbacks(i_deferred, request)
return server.NOT_DONE_YET
def render_POST(self, request):
'''to make sure both GET/POST are handled'''
return self.render_GET(request)
def handleCallbacks(self, d, req):
msg = d.addCallback(self.getEvent)
d.addCallback(self.postResponse(req, msg))
return None
def getEvent(self, msg):
return msg
def postResponse(self, request, response):
def post(event):
request.setHeader('Content-Type', 'application/json')
request.write(response)
request.finish()
self.postResponse(request, response)
return server.NOT_DONE_YET
return post
그리고 클라이언트 : 기본적으로
from urllib2 import URLError, HTTPError
api_req = 'http://localhost:8000/req' + '?' + urllib.urlencode({"request": request})
req = urllib2.Request(api_req)
try:
response = urllib2.urlopen(api_req)
except HTTPError, e:
print 'Problem with the request'
print 'Error code: ', e.code
except URLError, e:
print 'Reason: ', e.reason
else:
j_response = json.loads(response.read())
내가 원하는 것은 서버가 연결을 (request.finish()) 폐쇄, 대신 응답을 보내는 계속하지 않을 것입니다; 클라이언트는 이러한 메시지를 수신 할 수 있어야합니다.