2014-03-28 141 views
0

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

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 

回答

0

编辑:意识到我有误解其功能做这

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

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

这应该叫parse_friends并返回结果时,传递到task_async_get_me_friends(其已通过为用户id的第一个参数,但“等待”为链,以提供第二参数(json结果)。

+0

是的,谢谢我让它工作 –