Сельдерей (Джанго) Ограничение скорости - PullRequest
9 голосов
/ 01 февраля 2011

Я использую Celery для обработки нескольких задач интеллектуального анализа данных.Одна из этих задач подключается к удаленной службе, которая допускает максимум 10 одновременных подключений на пользователя (или, другими словами, CAN превышает 10 подключений во всем мире, но CANNOT превышают 10 соединений на отдельную работу).

I THINK Token Bucket (ограничение скорости) - это то, что я ищу, но я не могу найти какую-либо реализацию этого.

Ответы [ 3 ]

10 голосов
/ 01 февраля 2011

Celery имеет ограничение скорости и содержит общую реализацию токенов.

Установить ограничения скорости для задач: http://docs.celeryproject.org/en/latest/userguide/tasks.html#Task.rate_limit

Или во время выполнения:

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

Реализация маркера ведется в Комбу

3 голосов
/ 10 декабря 2012

Хотя это может быть плохой практикой, вы можете использовать выделенную очередь и ограничить работника, например:

    # ./manage.py celery worker -Q another_queue -c 10
3 голосов
/ 01 февраля 2011

После долгих исследований я обнаружил, что Celery не предоставляет явного способа ограничения количества одновременных экземпляров, подобных этому, и, более того, это обычно считается плохой практикой.

Лучшим решением будет одновременная загрузка в рамках одной задачи и использование Redis или Memcached для хранения и распространения для обработки других задач.

...