2016-06-23 6 views
0

私はTornadoを使用して、数千のURLからのデータを非同期に削り取っています。それぞれ5〜50MBなので、ダウンロードに時間がかかります。にも関わらず、「例外:HTTP 599:Connection closed http:...」エラー、が続きます。connect_timeoutとrequest_timeoutの両方を非常に大きな値に設定しています。Python Tornado接続が早くタイムアウトする - タイムアウト(HTTP 599エラー)を防止する方法はありますか?

なぜ、大きなタイムアウト設定にもかかわらず、私はまだスクリプトを実行するだけで、数分後に一部の要求にタイムアウトのですか?* NEVERタイムアウトにhttpclient.AsyncHTTPClientを指示する方法はありますか?または、タイムアウトを防止するためのよりよい解決策がありますか?あなたがHTTPError 599を注意したよう

@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

さ:

次のコマンドは、私が(各ワーカーが(このrequest_and_save_urlを呼び出す)ワーカー()コルーチンでサブコルーチン)をフェッチ呼んでいる方法です接続時に発生するかタイムアウトを要求しますが、これだけではありません。もう1つは、リクエストが終了する前にサーバーによって接続が閉じられたときです(レスポンスフェッチ全体を含む)。要求を処理する(サーバーの)タイムアウトや何らかの理由があります。

+0

これは多くの意味があります。ありがとう! – cataclysmic

+0

私の場合、599はレスポンスのサイズのためです。 https://github.com/tornadoweb/tornado/blob/master/tornado/test/simple_httpclient_test.pyこのファイルで599を検索します。私はコンテンツの長さがログファイルから長すぎるヒントを得ました。 –

関連する問題