【问题标题】:Celery, Group task, AttributeError: 'NoneType' object has no attribute 'app'Celery,组任务,AttributeError:“NoneType”对象没有属性“app”
【发布时间】:2016-11-01 10:49:21
【问题描述】:

我正在尝试运行一组 celery 任务,如下所示:

@shared_task
def run_sms_task(smstask_id):

    smstask = SmsTask.objects.get(id = smstask_id)
    if smstask:

        phones = []
        for user in smstask.userlist.users.all():
           phones.append(user.profile.phone)

        g = group(send_sms_async(phone, smstask.text) for phone in phones)
        g.apply_async()

        smstask.status = 3
        smstask.save()

任务部分执行,最后抛出以下错误:

[2016-11-01 13:42:03,362: ERROR/MainProcess] Task sms_center.tasks.run_sms_task[d575fb59-6b0a-4ea6-851f-0902ef6bd7b9] raised unexpected: AttributeError("'NoneType' object has no attribute 'app'",)
Traceback (most recent call last):
  File "/home/alexander/.pyenv/versions/d/lib/python3.5/site-packages/celery/app/trace.py", line 240, in trace_task
    R = retval = fun(*args, **kwargs)
  File "/home/alexander/.pyenv/versions/d/lib/python3.5/site-packages/celery/app/trace.py", line 438, in __protected_call__
    return self.run(*args, **kwargs)
  File "/home/alexander/PycharmProjects/d/sms_center/tasks.py", line 25, in run_sms_task
    g.apply_async()
  File "/home/alexander/.pyenv/versions/d/lib/python3.5/site-packages/celery/canvas.py", line 502, in apply_async
    type = self.type
  File "/home/alexander/.pyenv/versions/d/lib/python3.5/site-packages/celery/canvas.py", line 569, in type
    return self.app.tasks[self['task']]
  File "/home/alexander/.pyenv/versions/d/lib/python3.5/site-packages/celery/canvas.py", line 560, in app
    return self._app or (self.tasks[0].app if self.tasks else current_app)
AttributeError: 'NoneType' object has no attribute 'app'

如果您有任何想法,欢迎您提供帮助。谢谢!

【问题讨论】:

    标签: python django celery


    【解决方案1】:

    我发现了错误。我没有注意到 Group 是由 Subtasks 而不是 Tasks 创建的。正确的组创建将是:

    g = group(send_sms_async.s(phone, smstask.text) for phone in phones)
    

    如果您遇到同样的问题,希望这个答案可以节省一些时间!

    【讨论】:

      猜你喜欢
      • 2013-06-16
      • 2018-08-04
      • 1970-01-01
      • 1970-01-01
      • 2015-09-06
      • 1970-01-01
      • 2022-07-20
      相关资源
      最近更新 更多