Pythonでgrequestsを用いて並行処理で同時にリクエスト送信を行う

Pythonでgrequestsを用いて並行処理で同時にリクエスト送信を行ってみます。

今回はgrequestsを用います。このライブラリ・モジュールは、Pythonの標準ライブラリではありませんので、事前にインストールする必要があります。

■Python

今回のPythonのバージョンは、「3.8.5」を使用しています。(Windows10)(pythonランチャーでの確認)

■grequestsを用いて並行処理で同時にリクエスト送信を行う

では、早速grequestsを用いて並行処理で同時にリクエスト送信を行うスクリプトを書いていきます。

■コード

import grequests

urls = [
    'https://www.yahoo.co.jp/',
    'https://www.google.com/',
    'https://www.goo.ne.jp/',
    'https://www.bing.com/',
    'https://www.baidu.com/'
]

request_s = (grequests.get(u) for u in urls)

print(grequests.map(request_s))

importでgrequestsモジュールを呼び出します。その後、角括弧”[ ]”を用いて、urlsというリストを定義し、その中でカンマ”,”を用いてリクエスト送信を行うURLを格納します。今回URLにはYahoo!JAPANなどをURLを指定しています。

格納後、request_sという変数を定義し、その中でfor文をurls内のURLを順番に取り出したり、grequests.get()を用いてリクエスト送信を行います。

最後に、grequests.map()を用いてそれぞれのURLに同じ処理を行なった結果を返すようにし、print()で結果を出力します。

■実行・検証

このスクリプトを「multiple_request.py」という名前で、Pythonが実行されている作業ディレクトリ(カレントディレクトリ)に保存し、コマンドプロンプトから実行してみます。

実行してみると、grequestsを用いて並行処理で同時にリクエスト送信を行い、送信された結果が出力されました。今回は全てのURLが「 <Response [200]>(リクエストが成功)」という結果となりました。

コメント

タイトルとURLをコピーしました