How to put a rate limit on a celery queue?

Turns out it cant be done at queue level for multiple workers. IT can be done at queue level for 1 worker. Or at queue level for each worker.

So if u say 10 jobs/ minute on 5 workers. Your workers will process upto 50 jobs per minute collectively.

So to have only 10 jobs running at a time you either chose one worker. Or chose 5 workers with a limit of 2/minute.

Update: How to exactly put the limit in settings/configuration:

task_annotations = {'tasks.<task_name>': {'rate_limit': '10/m'}}

or change the same for all tasks:

task_annotations = {'*': {'rate_limit': '10/m'}}

10/m means 10 tasks per minute, /s would mean per second. More details here: Task annotations setting

Tags:

Celery