How to alternate between requests ensuring fairness in Celery? How to alternate between requests ensuring fairness in Celery? flask flask

How to alternate between requests ensuring fairness in Celery?


A possible solution is to route your users tasks (randomly) on separate celery workers using different queues. This may not give you exactly the same desired behviour but it will reduce tasks wait time.

in terminal:

$ celery -A my_app worker -l info  -c 1 -n my_worker1 -Q queue1$ celery -A my_app worker -l info  -c 1 -n my_worker2 -Q queue2$ celery -A my_app worker -l info  -c 1 -n my_worker3 -Q queue3

in your tasks.py:

selected_queue = select_queue() # select_queue is function that you may implement yourself to change each time between the queuesmy_task.apply_async(args=my_args, queue=selected_queue)