我创建了批量延迟的http(异步)客户端,它允许触发多个异步http请求,最重要的是它允许延迟请求的启动,例如,一次不会触发100个请求。
但它有一个问题。 http .fetch()方法有一个handleMethod参数来处理响应,但我发现如果提取后的延迟(休眠)不够长,则甚至不会触发handle方法。 (也许请求被杀或同时发生了什么)。
它可能与.run_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")