如何将参数传递给芹菜任务?



这是我的芹菜任务

def task_a(arg1, arg2, arg3, arg4)

我像下面这样称呼任务

arg1 是列表,arg2,3,4 是整数

task_a.apply_async(arg1, arg2, arg3, arg4)

我收到一条错误消息

File "/opt/envDjango/lib/python3.5/site-packages/celery/app/task.py", line 518, in apply_async
check_arguments(*(args or ()), **(kwargs or {}))
TypeError: functools.partial object argument after ** must be a mapping, not int

我该如何解决问题?

我试图制作字典并更改参数位置,它们都失败了......

delay就可以了。此方法很方便,因为它看起来像调用常规函数:在此处查看文档

task_a.delay(*arg,**kwargs)

delay显然很方便,但是如果要设置其他执行选项,则必须使用apply_async

task_a.apply_async(args=[arg1, arg2])

请注意,传递的参数是一个列表。

要将参数传递给具有apply_async()的任务,您需要将它们包装在一个列表中,然后将列表作为第一个参数传递,即apply_async([arg1, arg2, arg3]).有关更多详细信息和示例,请参阅文档。

使用delay()作为替代方法。好处是它保留了或多或少的函数参数接口,即不需要将参数包装在列表中。

相关内容

  • 没有找到相关文章

最新更新