使用Redis后端多次安装Celery

时间:2012-08-21 09:39:29

标签: python redis celery

是否可以使用相同的redis数据库用于使用芹菜的多个项目?就像使用密钥前缀将多个项目的相同数据库用作缓存一样。或者我是否必须为每次安装使用单独的数据库?

2 个答案:

答案 0 :(得分:13)

总结这篇有用的博文:http://kfalck.net/2013/02/21/run-multiple-celeries-on-a-single-redis

  • 为每个项目指定不同的数据库编号,例如redis:// localhost / 0和redis:// localhost / 1
  • 为不同的项目定义和使用不同的队列名称。在任务端,定义CELERY_DEFAULT_QUEUE,并在启动工作程序时,使用-Q参数指定该队列。在此处阅读有关路由的详情:http://docs.celeryproject.org/en/latest/userguide/routing.html

答案 1 :(得分:0)

我使用了一个redis后端用于芹菜,同时也使用带有前缀缓存数据的相同redis数据库。我在开发期间这样做,我只使用redis作为结果后端而不是排队任务,生产部署最终成为所有AMQP(redis仅用于缓存)。我没有任何问题,也不明白为什么会这样(除了性能问题)。

对于运行具有不同任务定义的多个芹菜项目,我认为问题是如果您有两种不同类型的工作人员,每个工作人员只能处理一部分工作类型。没有单独的数据库,我不确定工人如何能够分辨他们可以处理哪些工作。

我可能要么确保所有工作人员都定义了所有任务类型,并且可以处理任何事情,或者希望将单独的项目保存在单独的数据库中。这不需要安装任何额外的东西,你只需在你的一个芹菜项目中指定一个REDIS_DB = 1。可能还有另一种方法可以做到这一点。我不确定是否需要多个DB,但它有点意义。

如果您只使用redis作为结果后端,那么可能在一个redis数据库上有多个芹菜项目......我不太确定。