启动多个worker:
celery -A apps worker -l INFO -n worker1@%h -Q apps_task1
- 1.启动多个worker,但是不指定worker名字
- 2.可以为每个worker指定一个节点名字,使用--hostname或-n选项- -n worker1@%h- %h:主机名,包括域名。
- %n:仅限主机名。
- %d:仅限域名。
 
 
配置多个队列:
- 1.apply_async(queue=队列名)
- 2.app.task(queue=队列名)
- 3.配置文件的方式- CELERY_QUEUES = (- Queue('apps_task1', exchange=Exchange('apps_task1'), routing_key='apps_task1'),- Queue('apps_task2', exchange=Exchange('apps_task2'), routing_key='apps_task2'),- )
- CELERY_ROUTES = {- 'apps.task1.add': {'queue': 'apps_task1', 'routing_key': 'apps_task1'},- 'apps.task2.subs': {'queue': 'apps_task2', 'routing_key': 'apps_task2'},- }
 
- 注意:- 1.CELERY_ROUTES的作用是,给任务分配queue和routing_key,然后worker根据分配的queue值执行相应的任务。
- 2.CELERY_ROUTES中的key得指定到方法名
- 3.exchange可以不用,这是rabbitmq必须的,redis可以不用
- 4.queue和routing_key这两个值的名字不需要保持一致,那么为了方便使用和检查,最好还是保持一致。
- 5.CELERY_ROUTES中其实可以不用指定routing_key,和apply_async方法只传queue一样