Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 芹菜中不同队列使用不同的Redis数据库_Python_Django_Redis_Celery_Worker - Fatal编程技术网

Python 芹菜中不同队列使用不同的Redis数据库

Python 芹菜中不同队列使用不同的Redis数据库,python,django,redis,celery,worker,Python,Django,Redis,Celery,Worker,我有一个Django应用程序,它使用芹菜和Redis代理来执行异步任务。目前,该应用程序有3个队列(&3个工作者),它们连接到一个Redis实例进行通信。这里,前两个工人是基于工作前的工人,第三个是基于事件的工人 有关代理和后端的芹菜设置变量如下所示: CELERY_BROKER_URL="redis://localhost:6379/0" CELERY_RESULT_BACKEND="redis://localhost:6379/1" 由于芹菜用于实现

我有一个Django应用程序,它使用芹菜Redis代理来执行异步任务。目前,该应用程序有3个队列(&3个工作者),它们连接到一个Redis实例进行通信。这里,前两个工人是基于工作前的工人,第三个是基于事件的工人

有关代理和后端的芹菜设置变量如下所示:

CELERY_BROKER_URL="redis://localhost:6379/0"
CELERY_RESULT_BACKEND="redis://localhost:6379/1"
由于芹菜用于实现FIFO队列,我想知道对于不同的队列使用不同的Redis数据库是否正确甚至可能,比如-q1使用数据库
../1
和q2使用数据库
../2
进行消息传递?这样,每个工作人员将只监听专用数据库,并从队列中以较少竞争的方式拾取任务

  • 这有什么意义吗
  • 如果是这样的话,你如何在芹菜中实现这样的东西

首先,如果您担心负载,请指定您预期的数字/费率

在我看来,您不应该担心Redis处理负载的能力

  • Redis有自己的向外扩展/向内扩展功能,只要您需要
  • 您可以使用RabbitMQ作为代理(您可以看到,使用也非常简单),它同样有自己的扩展功能来支持高负载,所以我认为您不应该担心这一点

  • 据我所知,Redis broker无法使用不同的DBs。您可以使用不同的DBs创建不同的芹菜应用程序,但不能设置任务之间的依赖关系(画布:组、链等)。我不推荐这样的选择。

    为什么选择Redis而不是RabbitMQ作为代理?它应该处理的负载是什么?主要是简单性。芹菜Redis配置对我来说似乎非常简单,我只是选择了它。