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通信を効果的に行うことができます。

投稿者 admin

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です