python 3.x - Celery handling named argument -


i have celery task this

@app.task(bind=true,max_retries=3, default_retry_delay=1 * 60)   def dotargetprefilter(self,*args,**kwargs ): 

i calling as

args = [none,sourcedns, targetdnlist] kwargs= {'workername':workername,} result = r.dotargetprefilter.apply_async(*args,**kwargs) 

however getting strange error

file "/usr/local/lib/python3.4/dist-packages/celery/app/amqp.py", line 254, in publish_task raise valueerror('task kwargs must dictionary') 

valueerror: task kwargs must dictionary

a small unit test of invocation works fine;

def test_dotargetprefilter(self):      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) 

i have tried sorts of combinaiton , seen apply_async documentation. works if make normal method (without *args , **kwargs); doing wrong

the bind annotation supplies self; need remove args list, , arguments must in tuple when call apply_async. changing these 2 give

args = [sourcedns, targetdnlist] kwargs= {'workername':workername} result = r.dotargetprefilter.apply_async((args),kwargs) 

and function signature

@app.task(bind=true,max_retries=3, default_retry_delay=1 * 60)  # retry in 1 minutes. def dotargetprefilter(self,*args,workername=""): 

Comments

Popular posts from this blog

user interface - how to replace an ongoing process of image capture from another process call over the same ImageLabel in python's GUI TKinter -

javascript - Restarting Supervisor and effect on FlaskSocketIO -

android - Format a french phone number -