2017-11-23 10 views
0

私はちょうどPythonを使ってデータをスクラップし始めました。しかし、以下のような私のコードは仕事中にフリーズしています。私はいくつかのURLが何も応答しなかったからです。私はそのURLをもう一度試してみるとうまくいくと思います。私の質問は、 reshomee = requests.get(homeUrl、headers = headerss、timeout = 10)のようなコードを修正するだけの場合です。 このコードでは、10秒後にこのURLを再度試しても応答はありませんか?私はちょうどもう一度やり直さずに終わったらどうなるのか心配です...? URLが非常にまれで無作為に凍ってしまうので、このコードをどうやって試していいか分からないので、私はこれを聞くのを手伝うことができませんでした。ありがとうございました!タイムアウトした後にリクエストを続ける

def reshome(tries=0): 
    try: 
     reshomee = requests.get(homeUrl, headers=headerss) 
     return reshomee 
    except Exception as e: 
     print(e) 
     if tries < 10: 
      print('try:' + str(tries)) 
      sleep(tries*30+100) 
      return reshome(tries+1) 
     else: 
      print('cannot make it') 
+0

あなたはタイムアウトを設定した場合、それは時間がかかりすぎた場合、それは(参照:http://docs.python-requests.org/en/master/user/quickstart/#timeouts)例外がスローされます。 URLを再試行する場合は、手動で行う必要があります。 – user2896976

+0

例外になった場合、私はただ満足しています。私は実際にこの関数の外にurlを定義するので、同じURLをもう一度やり直すことになります。ありがとうございました!!! –

+0

例外をチェックする場合は、特にタイムアウト例外 'requests.exceptions.Timeout'を必ずチェックしてください。 – user2896976

答えて

0

モジュールでrequests.exceptionsを使用できます。

def reshome(tries=0): 
try: 
    reshomee = requests.get(homeUrl, headers=headerss, timeout=0.001) 
    return reshomee 
except requests.exceptions.Timeout as e: 
     return reshome(tries+1) 
+0

答えをありがとう。 1つの簡単な質問:それは500ishサーバーのエラーに直面したらどう?どこに行くの?別の例外を指定する必要がありますか?ありがとう! –

関連する問題