2016-08-02 26 views
0

要求モジュールを使用してWebスクレーパーを作成しました。私はセッションを開き、このセッションを使用して後続のリクエストを送信します。それは2つの段階を持っています。Pythonセッション10054接続が異常終了しました。エラー

1)ページ単位でページをスクラップし、IDを配列で収集します。 2)同じホスト上のajaxサーバーへのリクエストを使用して、配列内の各IDについての詳細を取得します。

私のLinuxマシンではスクレーパーが正常に動作します。しかし、私がWindows 10でボットを実行すると、フェーズ1は正常に完了しますが、フェーズ2のPythonでいくつかのリクエストがこの例外をスローした後に

ファイル "c:\ python27 \ lib \ site-packages \ requests \コネクションエラー:( '接続が中止されました。'、エラー(10054、 'Varrolan bir ba \ xf0lant \ xfd uzaktaki bir ana bilgisayar taraf \ xfdndan zorla kapat \ xfdld ')))

これを引き起こす2つのOSの違いは何ですか?どうすればこの問題を解決できますか?

リトライモジュールを使用して以下のようなリクエストコードを変更しても効果はありませんでした。スクリプトは例外をスローしませんが、単純に何もしません。

@retry(wait_exponential_multiplier=1000, wait_exponential_max=10000, stop_max_attempt_number=7) 
def doReq(self, url): 
    time.sleep(0.5) 
    response = self.session.get(url, headers=self.headers) 
    return response 

答えて

0

この問題がWindowsでのみ発生する理由はまだわかりません。しかし、デコレータを再試行すると、ソケットエラーの問題が修正されたようです。スクリプトがハングする理由は、サーバーが要求に応答していないためです。デフォルトでは、要求モードはレスポンスを永遠に待ちます。タイムアウト値を追加することによって、要求はタイムアウト例外をスローし、デコレータを再試行してキャッチして再試行します。私はこれが解決策ではなく解決策であることを知っていますが、これは私が今得ている最高のものです。

関連する問題