PythonでHTTPリクエストを送信し、特定のレスポンスを待つ方法について説明します。この記事は、Stack Overflowの質問「特定のHTTPレスポンスをPythonで待つ方法」と「Pythonのrequestsでレスポンスを待つ方法」に基づいています。
特定のHTTPステータスコードを待つ
HTTPリクエストを送信した後、特定のステータスコード(例えば200)を待つための一般的な方法は、以下のような関数を作成することです。
import time
def waitForResourceAvailable(response, timeout, timewait):
timer = 0
while response.status_code == 204:
time.sleep(timewait)
timer += timewait
if timer > timeout:
break
if response.status_code == 200:
break
この関数は、レスポンスのステータスコードが204である間、指定した時間間隔(timewait
)ごとに待機します。ステータスコードが200になるか、指定したタイムアウト時間(timeout
)が経過すると、ループから抜け出します。
スレッドでレスポンスを待つ
Pythonのthreading
モジュールを使用して、バックグラウンドスレッドでHTTPリクエストを送信し、レスポンスを待つことも可能です。
import threading
import requests
def send_request(event):
response = requests.get(url="https://www.google.com/")
event.set()
event = threading.Event()
thread = threading.Thread(target=send_request, args=(event,), daemon=False)
thread.start()
event.wait()
このコードでは、新しいスレッドを作成し、そのスレッドでHTTPリクエストを送信します。リクエストが完了すると、イベントが設定され、メインスレッドはそのイベントを待つことでレスポンスの完了を待ちます。
以上、PythonでHTTPレスポンスを待つ方法について説明しました。これらの方法を適切に使用することで、Pythonで非同期のHTTP通信を効果的に行うことができます。