我尝试使用类的方法作为django芹菜任务,使用@task decorator标记它。阿南德·杰亚哈尔也提出了同样的问题。 是这样的
class A:
@task
def foo(self, bar):
...
def main():
a = A()
...
# what i need
a.foo.delay(bar) # executes as celery task
a.foo(bar) # executes locally
问题是,即使我使用这样的类实例,它也会说,a.foo.delay(bar)
至少需要两个参数,这就需要self
指针未命中。
更多信息:
run()
方法执行方法,但这并不是我想要的。self
参数传递给方法会改变我执行方法的方式,而不是像芹菜那样,而是像通常的方法一样(即在测试时)谢谢你的帮助!
当你有:
你可以:
干杯
杰里米·萨特菲尔德(Jeremy Satterfield)有一个干净而直接的教程,如果你想完成的话,可以编写基于类的任务。你可以检查一下。
魔术基本上是扩展
celery.Task
类,包括一个run()
方法,如下所示:然后像这样运行任务:
我不确定是否需要
ignore_result = True
部分芹菜从3.0版开始就有了使用方法作为任务的实验支持。
这方面的文档在
celery.contrib.methods
中,还提到了一些您应该注意的注意事项:http://docs.celeryproject.org/en/latest/reference/celery.contrib.methods.html
注意:支持从4.0开始从芹菜中删除
contrib.methods
相关问题 更多 >
编程相关推荐