我有一个Django应用程序,它使用Celery和Redis broker进行异步任务执行。目前,该应用程序的3队列 (& 3个工作人员)连接到单个Redis实例进行通信。在这里,前两个工作人员是基于预叉的工作人员,第三个是工作人员。
与代理和后端有关的芹菜设置变量如下所示:
CELERY_BROKER_URL="redis://localhost:6379/0"
CELERY_RESULT_BACKEND="redis://localhost:6379/1"由于芹菜使用鲁普-布拉普实现FIFO队列,我想知道对于不同的队列使用不同的Redis数据库是否正确,甚至是否可能-- q1使用数据库.../1,q2使用数据库.../2进行消息传递?通过这种方式,每个工作人员只会监听专用的数据库,并在竞争较少的情况下从队列中获取任务。
发布于 2021-01-09 18:32:04
首先,如果您担心负载,请指定您的预期数字/费率。
在我看来,您不应该担心Redis处理负载的能力。
据我所知,没有办法为Redis broker使用不同的DB。您可以使用不同的DB创建不同的芹菜应用程序,但是不能在任务之间设置依赖关系(画布:分组、链等)。我不推荐这样的选择。
https://stackoverflow.com/questions/65630575
复制相似问题