、あなたはこのような一定期間後にカスタム例外を発生させることができます。
import signal
class TimeoutException(Exception): # custom exception
pass
def timeout_handler(signum, frame): # raises exception when signal sent
raise TimeoutException
# Makes it so that when SIGALRM signal sent, it calls the function timeout_handler, which raises your exception
signal.signal(signal.SIGALRM, timeout_handler)
# Start the timer. Once 5 seconds are over, a SIGALRM signal is sent.
for proxy in proxyList:
signal.alarm(5)
try:
r=requests.post(url, proxies=proxy, data=payload)
except TimeoutException:
pass
を基本的には、時間制限がある後にするとき、あなたが上げのカスタム例外を作成しています(つまり、SIGALRM
が送信されます)。もちろん、制限時間を調整することができます。
もっと単純にの場合は、わかる限り、timeoutパラメータを使用できます。 documentationはこう言っています:
タイムアウトパラメータを使用して、要求が指定された秒数後に応答を待つことを停止するように指示できます。ほぼすべてのプロダクションコードでは、ほぼすべての要求でこのパラメータを使用する必要があります。そうしないと、[...]あなたのプログラムがハングアップしているように
を引き起こす可能性がありますので、あなたのコードは
for proxy in proxyList:
r=requests.post(url, proxies=proxy, data=payload, timeout=1)
ように見える終わるでしょう(タイムアウトパラメータは秒である。)
リクエストのドキュメントを確認しましたか? 'post()'はタイムアウトパラメータをとります。 – Jkdc
@Jkdcそれは例外を発生させます。もちろん、私は例外処理によって私の仕事をやることができます。しかし、私はより一般的な意味でそれを望んでいました...もし私が要求について話していなければどうですか?あらかじめ定義することはできませんか?次の繰り返しに進む方法はありますか? –