【发布时间】:2015-07-13 15:11:11
【问题描述】:
我有一个像这样的芹菜任务
@app.task(bind=True,max_retries=3, default_retry_delay=1 * 60)
def doTargetprefilter(self,*args,**kwargs ):
我称之为
args = [None,sourcedns, targetdnlist]
kwargs= {'workername':workername,}
result = r.doTargetprefilter.apply_async(*args,**kwargs)
但是我遇到了一个奇怪的错误
File "/usr/local/lib/python3.4/dist-packages/celery/app/amqp.py", line 254, in publish_task
raise ValueError('task kwargs must be a dictionary')
ValueError: task kwargs must be a dictionary
调用的小单元测试工作正常;
def test_doTargetprefilter(self):
from ltecpxx.mrosimpleexecutor import doTargetprefilter
s=[1,2,3]
t=[1,2,2]
workername="ltecpxx.mrosimpleexecutor.SimplePrefilter"
args =[None,s,t]
kwargs={'wokername':workername}
doTargetprefilter(*args,**kwargs)
我尝试了各种组合,还看到了 apply_async 文档。如果我将其作为普通方法(没有 *args 和 **kwargs),它会起作用;我做错了什么
【问题讨论】:
标签: python-3.x celery celery-task