【问题标题】:Django celery chainDjango 芹菜链
【发布时间】:2014-03-28 19:57:46
【问题描述】:

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

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

【问题讨论】:

    标签: python django celery


    【解决方案1】:

    编辑:意识到我误解了哪个函数做了哪个

    我还在跟上 celery 的步伐,但我认为你的连锁店并没有达到你想要的效果。具体来说,chain 需要一个任务列表;您只提供 1 个任务(恰好使用了第 2 个任务)。我想你想要的是:

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

    这应该调用 parse_friends 并在返回结果时将其传递给 task_async_get_me_friends(第一个参数作为 userId 传入,但正在“等待”chain 提供第二个参数(json 结果)。

    【讨论】:

      猜你喜欢
      • 2012-05-01
      • 2021-11-29
      • 2019-01-29
      • 2021-08-21
      • 2018-12-07
      • 2012-12-05
      • 2014-12-04
      • 2015-09-25
      • 2018-01-27
      相关资源
      最近更新 更多