9

Celery を使用して、複数のデータ マイニング タスクを処理しています。これらのタスクの 1 つは、ユーザーごとに最大 10 の同時接続を許可するリモート サービスに接続します(つまり、グローバルに 10 接続を超えることはできますが、個々のジョブごとに 10 接続を超えることはできません)。

Token Bucket (レート制限)を探していると思いますが、その実装が見つからないようです。

4

3 に答える 3

11

Celeryはレート制限を備えており、一般的なトークンバケットの実装が含まれています。

タスクのレート制限を設定します:http: //docs.celeryproject.org/en/latest/userguide/tasks.html#Task.rate_limit

または実行時:

http://docs.celeryproject.org/en/latest/userguide/workers.html#rate-limits

トークンバケットの実装は昆布にあります

于 2011-02-01T14:56:50.653 に答える
3

多くの調査の結果、Celery はこのような同時インスタンスの数を制限する方法を明示的に提供していないことがわかりました。さらに、そうすることは一般的に悪い習慣と見なされます。

より良い解決策は、1 つのタスク内で同時にダウンロードし、Redis または Memcached を使用して保存し、他のタスクを処理するために配布することです。

于 2011-02-01T15:54:58.083 に答える
3

悪い習慣かもしれませんが、次のように専用キューを使用してワーカーを制限できます。

    # ./manage.py celery worker -Q another_queue -c 10
于 2012-12-10T12:15:29.737 に答える