Django芹菜链

时间:2014-03-28 19:57:46

标签: python django celery

我想将一个任务的结果传递给另一个任务。我正在使用链

som = chain (task_async_get_me_friends.s((userId), parse_friends.s()))()
q = som.get()
print q

我的目的是创造2个任务。第一个任务获取用户的朋友,然后将JSON对象中的朋友传递给parse_friends任务。我从task_async_get_me_friends获得结果,但后来无法调用parse_friends

@celery.task
def task_async_get_me_friends(userId, *args):
   logger.info('First do something')
   users_friends = fb_get_friends(userId)
   # Till here everything is all good, I did see the celery logger. Getting result from fb
   return {'result':'success', 'data':users_friends}

@celery.task
def parse_friends(users_friends,*args,**kwargs):
   # This log line i cannot see in the celery
   logger.info('Second do something'+str(users_friends))
   # Do something with users_friends

1 个答案:

答案 0 :(得分:0)

编辑:意识到我误解了哪个功能

我仍然在加快芹菜的速度,但我不认为你的连锁店正在做你想做的事。具体来说,链条会列出一系列任务;你只提供了1个任务(恰好使用了第2个任务)。我想你想要的是:

som = chain (task_async_get_me_friends.s(userId),parse_friends.s())

这应该调用parse_friends,当返回该结果时,将其传递给task_async_get_me_friends(其中第一个参数作为userId传入,但是#34;等待"为链提供第二个参数(json结果)