python – Celery任务的定义和实现可以拆分吗?

我在
Python中使用Celery来运行后台任务,并且无法找到关于我是否可以从任务实现中拆分Celery任务定义的问题的任何明确答案?

例如,执行以下非常简单的任务:

@celery_app.task
def add_numbers(num1, num2):
    return num1 + num2

定义和实现位于同一文件中,即当调用者导入此模块以调用add_numbers时,将导入定义和实现.

在这种情况下,不是那么糟糕.但我的任务有点复杂,导入调用者当然不需要的多个模块和包,我想不要打电话给我.

那么,芹菜提供了这样做的方法吗?或者我反对框架?这甚至是个问题吗?

我见过这个问题Celery dynamic tasks / hiding Celery implementation behind an interface
实施背后的接口,但它已经超过两年了 – 足够的时间可以改变很多.

最佳答案 有一个名为
signatures的功能允许在不导入任务的情况下调用任务.您将需要Celery应用程序实例可用:

sig = celery_app.signature('myapp.add_numbers', args=(1,2))
sig.delay()
点赞