How does a Celery worker consuming from multiple queues decide which to consume from first?
From my testing, it processes multiple queues round-robin style. If I use this test code: from celery import task import time @task def my_task(item_id): time.sleep(0.5) print(‘Processing item “%s”…’ % item_id) def add_items_to_queue(queue_name, items_count): for i in xrange(0, items_count): my_task.apply_async((‘%s-%d’ % (queue_name, i),), queue=queue_name) add_items_to_queue(‘queue1’, 10) add_items_to_queue(‘queue2’, 10) add_items_to_queue(‘queue3’, 5) And start the queue with (using … Read more