2017-07-18 31 views
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吗?还是有更合适的解决方案?

回答

0

对于多个应用程序我使用不同的Redis数据库等

redis://localhost:6379/0 
redis://localhost:6379/1 

相关问题