2016-11-01 2 views
2

Ich versuche, eine Gruppe von Sellerie Aufgaben ausführen wie folgt:Sellerie, Gruppe Aufgabe, Attribute: ‚NoneType‘ Objekt hat kein Attribut ‚App‘

@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() 

Die Aufgabe teilweise ausgeführt wird und in das Ende wirft folgender Fehler:

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

Sie sind willkommen zu helfen, wenn Sie irgendwelche Ideen haben. Vielen Dank!

+0

Bitte zeigen Sie die vollständige Traceback. –

+0

@DanielRoseman Ich habe es zu der Frage hinzugefügt. –

Antwort

5

Ich habe den Fehler gefunden. Ich habe nicht bemerkt, dass die Gruppe aus Unteraufgaben und nicht aus Aufgaben besteht. Die korrekte Gruppenerstellung wäre dann:

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

Hoffentlich wird diese Antwort einige Minuten sparen, wenn Sie das gleiche Problem konfrontiert haben!

Verwandte Themen