![](/img/trans.png)
[英]django celery positional arguments celerybeat scheduling error
[英]Celery task cannot be called (missing positional arguments) from Django app
好吧,我已经翻遍了所有 SO 帖子、Celery 文档等……但我就是想不通。 无论我尝试什么或如何尝试从 Django 应用程序调用任务,Celery 都在抱怨我没有提供所需的参数。
“类型错误: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 和 Celery 配置相关的帖子中添加更多信息。
但我认为您的错误在于 @task 装饰器,因为您似乎需要使用Bound tasks :
所以你的代码应该是这样的:
import celery
@task(bind=True, name="my_add")
def add(self, x, y):
return x + y
请注意,任务装饰器的绑定参数将提供对 self(任务类型实例)的访问。
最后,我建议您再次查看 Django 上的Celery 设置。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.