在Redis后端使用多个Celery安装

yiytaume  于 2023-01-29  发布在  Redis
关注(0)|答案(2)|浏览(146)

有没有可能用同一个redis数据库来处理多个使用celery的项目?就像用一个键前缀来缓存多个项目一样。或者我必须为每个安装使用一个单独的数据库吗?

h43kikqp

h43kikqp1#

从这篇有用的博客文章中总结:https://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
pjngdqdw

pjngdqdw2#

我在使用带有前缀缓存数据的redis数据库的同时,也使用了一个redis后端来处理celery 。我在开发过程中这样做了,我只在结果后端使用了redis,而不是对任务进行排队,生产部署最终都是AMQP(redis只用于缓存)。我没有遇到任何问题,也不明白为什么会有问题(除了性能问题)。
对于运行多个具有不同任务定义的celery 项目,我认为问题是如果您有两种不同类型的工作人员,每种只能处理工作类型的子集,如果没有单独的数据库,我不确定工作人员如何能够区分他们可以处理哪些工作。
我可能想要确保所有的工作者都定义了所有的任务类型,并且可以处理任何事情,或者想要将单独的项目保存在单独的数据库中。这不需要安装任何额外的东西,你只需要在你的一个celery 项目中指定一个REDIS_DB=1。可能有另一种方法可以做到这一点。我不确定是否需要多个数据库,但是这有点意义。
如果你只使用redis作为结果后台,也许在一个redis数据库上有多个celery 项目也可以......我不是很确定。

相关问题