多くのアイテム(〜100)ですべてを一度に見るのではなく、(時間がかかる)apiにクエリを実行したい。代わりに、私はクエリの間に少し遅延が欲しいです。Celery + Python:別のタスク内で時間のかかるタスクをキューに入れよう
私が現在持っていることは、クエリの上に非同期で繰り返し処理を実行し、各反復の後にいくつかの時間を待ってますタスクです:私の質問は、それらの要求の倍数が入って来たときに、第二の意志、ある
@shared_task
def query_api_multiple(values):
delay_between_queries = 1
query_results = []
for value in values:
time.sleep(delay_between_queries)
response = query_api(value)
if response['result']:
query_results.append(response)
return query_results
最初の処理が終了した後、または最初の処理が実行されている間に要求が実行されますか?そして、彼らが同時に処刑されないとき、どうすればこれを達成できますか?
あなたがtime.sleep
を使うべきではありませんが、率ではなく、あなたのタスクを制限
次のようなETA(予想到着時間)を使用して非同期的に行うために、ETA - 後でタスクをスケジュールする必要があります。 access_awful_system.apply_async((object_id)、eta =後で)[参考] ETA。 –