在启动task异步任务时报错:task args must be a list or tuple
报错代码:
task.apply_async((arg1), countdown=0)
原因:
args位置应赋值参数元组,函数该位置参数首先是一个元组,另外在位置上、数量上、类型上要一一对应,
这里实际就是元组的语法问题,若元组只有一个元素时,则需要在后面加逗号,否则计算机不会当该变量为元组,而是字符串;多个元素时不用加。
可以本地测试下:
# ------单元素--------
a = ('abc')
print(a, type(a))
# 结果:abc <class 'str'>
a = ('abc',)
print(a, type(a))
# 结果:('abc',) <class 'tuple'>
# ----多元素---------
a = ('abc', 'd')
print(a, type(a))
# 结果:('abc', 'd') <class 'tuple'>
所以正确代码:
task.apply_async((arg1,), countdown=0)