Python龙卷风异步客户端

2024-10-01 07:41:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我创建了批处理延迟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")

Tags: 方法runselfhttpexecuterequestdefsync