Python Tornado连接提前超时 - 任何防止超时的方法(HTTP 599错误)?

时间:2016-06-23 03:36:51

标签: python asynchronous tornado

我正在使用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([])

1 个答案:

答案 0 :(得分:1)

正如您所注意到的HTTPError 599在连接或请求超时时引发的,但这不是唯一的情况。另一个是在请求结束之前服务器关闭了连接(包括整个响应获取),例如由于它(服务器)超时来处理请求或其他什么。