我正在使用Tornado从数千个URL中异步搜索数据。每个都是5-50MB,所以他们需要一段时间下载。我一直得到“例外:HTTP 599:连接关闭http:...”错误,尽管事实上我将connect_timeout和request_timeout都设置为非常大的数字。
为什么,尽管有超大的超时设置,我在运行脚本几分钟后仍然会对某些请求超时?*有没有办法指示httpclient.AsyncHTTPClient 从不超时?或者是否有更好的解决方案来防止超时?
以下命令是我如何调用fetch(每个worker在 Worker()协同程序中调用此 request_and_save_url()子协程:
@gen.coroutine
def request_and_save_url(url, q_all):
try:
response = yield httpclient.AsyncHTTPClient().fetch(url, partial(handle_request, q_all=q_all), connect_timeout = 60*24*3*999999999, request_timeout = 60*24*3*999999999)
except Exception as e:
print('Exception: {0} {1}'.format(e, url))
raise gen.Return([])
答案 0 :(得分:1)
正如您所注意到的HTTPError 599
在连接或请求超时时引发的,但这不是唯一的情况。另一个是在请求结束之前服务器关闭了连接(包括整个响应获取),例如由于它(服务器)超时来处理请求或其他什么。