我有这部分代码:
como_url = "".join(['http://', options.como_address, ':', options.como_port,
'/ztc_config?netid=0&opcode_group=0&opcode=0&start=-20s&end=-1s'])
http_client = AsyncHTTPClient()
response = yield tornado.gen.Task(http_client.fetch, como_url)
我在哪里做一个http请求。我会添加一个连接超时,以确保先前的代码已被执行,所以我可以找到我的回复。
如何添加超时?我必须将它添加到tornado.gen.Task调用中吗?我不知道该怎么做。
答案 0 :(得分:4)
使用HTTPRequest
类为请求添加超时,而不是仅将网址传递给fetch
。尝试:
request = tornado.httpclient.HTTPRequest(url=como_url, connect_timeout=20.0, request_timeout=20.0)
response = yield tornado.gen.Task(http_client.fetch, request)
请参阅http://www.tornadoweb.org/en/branch2.4/httpclient.html#tornado.httpclient.HTTPRequest
答案 1 :(得分:1)
我也遇到过这个问题,有时超时不起作用。
原因是SimpleAsyncHTTPClient.max_clients
达到最大值。
在SimpleAsyncHTTPClient.fetch_impl
中,如果self.active
的数量大于max_clients
,则timeout_handle
的数量不会被分配。
所以你添加增加龙卷风实例或max_clients
,可以解决它