サードパーティのサービスから情報を要求する Luigi タスクがあります。その API 呼び出しに対して 1 分間に実行できる呼び出しリクエストの数は制限されています。
スケジューラが単位時間あたりに実行する必要があるこの種のタスクの数をタスクごとに指定する方法はありますか?
タスクに独自のレート制限を実装しました。私たちの API 制限は十分に低く、単一のスレッドで飽和する可能性がありました。レート制限の応答を受け取ったときは、いったん後退して再試行します。
できることの 1 つは、API 呼び出しをリソースとして宣言することです。config で使用可能なリソースの数を設定し、task のプロパティとしてタスクが消費するリソースの数を設定できます。これにより、一度に n 個のそのタスクを実行するように制限されます。
設定で:
[resources]
api=1
タスクのコード:
resources = {"api": 1}