我创建了批处理延迟http(async)客户机,它允许触发多个异步http请求,最重要的是它允许延迟请求的开始,因此例如一次不会触发100个请求。在
但它有一个问题。fetch()方法有一个handleMethod参数来处理响应,但是我发现如果获取之后的延迟(睡眠)不够长,handle方法甚至不会被触发。(可能请求被终止或同时发生什么)。在
它可能与.run\u sync方法有关。怎么解决?我想推迟,但不希望这个问题发生。在
我需要解析响应,不管请求需要多长时间,也不管接下来的睡眠调用(正如我所说,这个调用还有另一个原因,它根本不应该与响应处理相关)
class BatchDelayedHttpClient:
def __init__(self, requestList):
# class members
self.httpClient = httpclient.AsyncHTTPClient()
self.requestList = requestList
ioloop.IOLoop.current().run_sync(self.execute)
@gen.coroutine
def execute(self):
print("exec start")
for request in self.requestList:
print("requesting " + request["url"])
self.httpClient.fetch(request["url"], request["handleMethod"], method=request["method"], headers=request["headers"], body=request["body"])
yield gen.sleep(request["sleep"])
print("exec end")
目前没有回答
相关问题 更多 >
编程相关推荐