APIに何千もの呼び出しを行い、応答が遅くて数十秒かかるとします。唯一の制限は、最大で1秒あたり1回のリクエストを行うことができることです。これを行う最善の方法は何ですか?私は次のコードが動作すると思うが、私は何とかスレッドライブラリをうまく利用できるはずです。あなたは確実にしたい場合はPythonスレッドを使用して速度の遅いAPIへの呼び出しを数千回行う
from concurrent.futures import ThreadPoolExecutor
with ThreadPoolExecutor(max_workers=5) as executor:
for work in work_list:
executor.submit(work_function, work)
:私はこのように、あなたは固定サイズのスレッドプールを使用してジョブの束を実行したい場合は、あなたがconcurrent.futures.ThreadPoolExecutor
を使用することができますのpython 3.3
last_job = datetime.now()
for work in work_list:
while (datetime.now()-last_job).total_seconds() < 1 or threading.active_count() >= max_threads:
time.sleep(.1)
threading.Thread(target=work_function, args=[work]).start()
last_job = datetime.now()
私はあなたが作ることができるという権利を取得しました1秒ごとにリクエストするので、最初のクエリ結果が20秒間待つ間に、別の19個のインスタンスをインスタンス化できますか?それらの追加の19の質問は、最初のものに対する応答を遅くしないでしょうか? – alko
セロリを使用してジョブをキューに入れ、レート制限を設定するのはなぜですか? – adam
@adamはこの仕事のために少し残虐ではありませんか? – alko