1
如何为多个应用程序使用同名的Celery队列?与多个应用程序一起使用Celery队列
我有具有N客户端数据库,这都需要在一个特定的队列M.
对于每个客户端数据库芹菜任务处理的应用程序,我有一个单独的芹菜工人我启动等:
celery worker -A client1 -n [email protected]%h -P solo -Q long
celery worker -A client2 -n [email protected]%h -P solo -Q long
celery worker -A client3 -n [email protected]%h -P solo -Q long
当我一次跑完所有的工作人员,并试图启动client1的任务时,我发现它似乎从未执行过。然后,除了第一个工人之外,我杀了所有的工人,现在第一个工人接受并执行任务。事实证明,即使每个工作人员的应用程序使用不同的BROKER_URL,使用相同的队列也会导致他们窃取对方的任务。
这让我感到惊讶,因为如果我没有指定-Q
,这意味着Celery从“默认”队列中拉出,这不会发生。
如何防止我的自定义队列?唯一的解决方案是在队列名称中包含客户端ID吗?还是有更合适的解决方案?