4

私はgrequests約10,000回の呼び出しを行うために使用していますが、これらの呼び出しの一部は503. 一度に 10,000 件の呼び出しすべてをキューに入れなければ、この問題はなくなります。それを 1000 のグループに分割するとうまくいくようです。503ただし、このエラーをキャッチして再試行する方法があるかどうか疑問に思っていましたrequest

これは、スレッドを呼び出して結合する方法です。

import grequests
rs = (grequests.get(u, headers=header) for u in urls)
response = grequests.map(rs)

これが本当に漠然としていることはわかっていますが、 を使用してこれが可能かどうかさえわかりませんgrequests

私は素朴に試しました

import grequests
rs = (grequests.get(u, headers=header) for u in urls)
time.sleep(1)
response = grequests.map(rs)

しかし、これはそれを遅くするものではありません。

4

2 に答える 2

2

おそらく、イベントフックを使用してエラーをキャッチし、リクエストを再起動してみてくださいhttp://docs.python-requests.org/en/master/user/advanced/#event-hooks

 import grequests

 def response_handler(response):
     if response.status_code == '503':
         print('error.503')

 rs = (grequests.get(u, headers=header, hooks = dict('response' : response_handler)) for u in urls)
 response = grequests.map(rs)`
于 2016-10-13T00:22:35.220 に答える