gpt4 book ai didi

daemon - 使用 celeryd 作为多个 django 应用程序的守护进程?

转载 作者:行者123 更新时间:2023-12-03 12:17:55 28 4
gpt4 key购买 nike

我刚开始使用django-celery我想设置 celeryd 作为守护进程运行。 instructions但是,似乎表明一次只能为一个站点/项目配置它。 celeryd 可以处理多个项目,还是只能处理一个?而且,如果是这种情况,是否有一种干净的方法可以将 celeryd 设置为为每个配置自动启动,这需要我为每个配置创建一个单独的初始化脚本?

最佳答案

像所有有趣的问题一样,答案视情况而定。 :)

绝对有可能想出一个场景,其中 celeryd 可以被两个独立的站点使用。如果多个站点正在向同一个交易所提交任务,并且这些任务不需要访问任何特定的数据库——例如,它们对电子邮件地址、信用卡号或数据库记录以外的其他东西进行操作——那么一个 celeryd 可能就足够了。只需确保任务代码位于所有站点和 celery 服务器加载的共享模块中。

但是,通常情况下,您会发现 celery 需要访问数据库——它要么根据作为任务参数传递的 ID 加载对象,要么必须将一些更改写入数据库,或者大多数情况下,两者兼而有之.并且多个站点/项目通常不共享数据库,即使它们共享相同的应用程序也是如此,因此您需要将任务队列分开。

在这种情况下,通常会发生的情况是您设置了具有多个交换的单个消息代理(例如 RabbitMQ)。每个交换从一个站点接收消息。然后你在某处为每个交换运行一个或多个 celeryd 进程(在 celery 配置设置中,你必须指定交换。我不相信 celeryd 可以监听多个交换)。每个 celeryd 服务器都知道它的交换、它应该加载的应用程序以及它应该连接到的数据库。

为了管理这些,我建议查看 cyme -- 由@asksol 编写,如有必要,可在多台服务器上管理多个 celeryd 实例。我没有尝试过,但它看起来应该为不同的实例处理不同的配置。

关于daemon - 使用 celeryd 作为多个 django 应用程序的守护进程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10234386/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com