2016-11-01 18 views
2

を持っていない私は、次のようにセロリのタスクのグループを実行しようとしています:セロリ、グループタスク、はAttributeError:「NoneType」オブジェクトが属性「アプリ」

@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' 

あなたのアイデアがあれば歓迎します。ありがとうございました!

+0

完全なトレースバックを表示してください。 –

+0

@DanielRoseman質問に追加しました。 –

答えて

5

私はこのバグを発見しました。グループはタスクではなくサブタスクから作成されていることに気付かなかった。

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

同じ問題が発生した場合、この回答を保存することをお勧めします。

関連する問題