如何动态添加函数到现有的Celery工作进程?

0 投票
1 回答
1412 浏览
提问于 2025-04-16 09:52

我刚开始学习celery,想知道是否可以在已经启动的celeryd进程中添加模块。换句话说,我不想像在

CELERY_IMPORTS = ("tasks", "additional_module" )

启动工作进程之前那样通过celeryconfig.py来添加模块,而是想在工作进程启动之后以某种方式让additional_module可用。

提前谢谢你们。

1 个回答

2

你可以通过启动一个新的 celeryd,并扩展导入列表,来实现你的目标,然后在旧的工作进程完成当前任务后,优雅地关闭它。

因为获取任务是异步的,也就是说任务会被推送给你,而只有在celery完成工作后才会标记为完成,所以用这种方式你实际上不会错过任何工作。你应该可以在同一台机器上运行celery工作进程——它们会作为新的连接出现在RabbitMQ(或者你使用的其他队列后端)上。

撰写回答