使用多个安装的Celery与Redis后端

14

使用celery,是否可以将同一Redis数据库用于多个项目?例如,使用具有键前缀的相同数据库作为多个项目的缓存。还是每次安装都需要使用单独的数据库?

2个回答

20

感谢您的回答。希望它能帮助未来的用户,我已经转而使用RabbitMQ作为任务队列和Redis作为结果后端。 - frog32

2
我曾使用redis作为celery的后端,同时在同一redis数据库中使用带前缀的缓存数据。这仅用于开发,我只使用redis作为结果后端而不是队列任务,在生产部署中全部使用AMQP(redis仅用于缓存)。我没有遇到任何问题,也不明白为什么会有问题(除了性能问题)。
对于运行具有不同任务定义的多个celery项目,我认为问题在于如果您有两种不同类型的工作者,每种工作者只能处理一部分工作类型。如果没有单独的数据库,我不确定工作者如何能够知道他们可以处理哪些工作。
我可能要确保所有工作者都定义了所有任务类型并且可以处理任何任务,或者想要将单独的项目保存在单独的数据库中。这不需要安装额外的内容,您只需在其中一个celery项目中指定REDIS_DB = 1即可。可能还有另一种方法来解决这个问题。我不确定是否需要多个数据库,但这似乎是合理的。
如果您只是使用redis作为结果后端,那么在一个redis数据库上有多个celery项目可能会起作用...但我不太确定。

谢谢您的回答,但是Charl的回答更具体并且对我有用。Charl的回答应该被接受为这个问题的答案。 - vpontis

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接