Python Celery - 切换TaskRegistry实现

时间:2014-11-12 15:01:12

标签: python dependencies inversion-of-control celery code-injection

我想知道如何更改Celery TaskRegistry实现,以便我可以使用自己的实现来切换它。我希望在创建任务时将依赖项注入任务(例如,在运行芹菜工作进程时)。

我试过了:

from celery import Celery
Celery.registry_cls=MyCustomTaskRegistry

在创建我的应用实例之前的顶部。但它似乎没有被接受。

非常感谢任何正确方向的帮助。

2 个答案:

答案 0 :(得分:0)

您可以像这样定义自己的注册表

from celery import Celery

a = Celery()
print(a.registry_cls)    # gives original registry

from celery.app.registry import TaskRegistry

class MyCustomRegistry(TaskRegistry):
    pass

a.registry_cls = MyCustomRegistry
print(a.registry_cls)     # gives your custom registry

答案 1 :(得分:0)

自己找到解决方案:

app._tasks=MyCustomTaskRegistry()