![](/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.