Django应用程序无法调用芹菜任务(缺少位置参数)



好吧,我已经倒在所有SO帖子,芹菜文档等上...而我只是无法弄清楚。无论我尝试什么或尝试从Django应用程序调用任务,芹菜都抱怨我没有提供所需的参数。

" typeError:add()缺少2个必需的位置参数:'x'和'y'。

我正在遵循他们的文档中的一个非常简单的示例...仅使用延迟,例如:

add.delay(1, 2)

仍然存在相同的错误。我还尝试了add.delay(x=1, y=2)celery.send_task("add", [1, 2])和我在各种帖子中看到的任务的其他多种方式,并且它们都没有用。

该方法非常简单:

@shared_task
def add(x, y):
    return x + y

我也尝试过命名,例如:

@task(name="my_add")
def add(x, y):
    return x + y

相同的结果。我还可能缺少什么?

首先,您应该在帖子中添加更多信息,以与您的django&芹菜配置。

,但我认为您的错误在@Task Decorator上,因为您似乎需要使用绑定任务

  • 被绑定的任务意味着任务的第一个参数将始终就像python绑定的方法一样,是列为实例(自我)。参考。
  • 另一方面, bind 参数意味着该函数将是"绑定方法",以便您可以在任务类型实例上访问属性和方法。参考

,您的代码应该看起来像:

import celery
@task(bind=True, name="my_add")
def add(self, x, y):
    return x + y

请注意,绑定参数与任务装饰器将提供对自我的访问(任务类型实例)。

最后,我建议您再次查看Django上的芹菜设置。

相关内容

  • 没有找到相关文章

最新更新