2012-11-28 2 views
0

J'ai une application flacon avec sqlalchemy et un céleri travailleur en marche. J'utilise redis comme mon courtier. Chaque fois que quelqu'un soumet un nouveau message dans une conversation, un travailleur est démarré et est censé envoyer des courriers de notification à toutes les personnes participant à la conversation. Ainsi, il se connecte à la base de données et obtient toutes les adresses e-mail pertinentes.Que puis-je faire si le céleri oublie les tâches de façon (apparemment) aléatoire?

Malheureusement, il semble y avoir un facteur aléatoire de décider, si le céleri connaît la tâche qui envoie le courrier ou non. Après quelques démarrages cela fonctionne parfaitement (parfois), après quelques démarrages cela ne fonctionne pas du tout. L'erreur que je reçois, quand il ne fonctionne pas est: la tâche dans la liste des tâches que

[2012-11-28 21:42:58,751: ERROR/MainProcess] Received unregistered task of type 'messages.sendnotifies'. 
The message has been ignored and discarded. 

Did you remember to import the module containing this task? 
Or maybe you are using relative imports? 
Please see http://bit.ly/gLye1c for more information. 

The full contents of the message body was: 
{'retries': 0, 'task': 'messages.sendnotifies', 'eta': None, 'args': [41L], 'expires': None, 'callbacks': None, 'errbacks': None, 'kwargs': {}, 'id': '47da3ba7-ec91-4056-bb4f-a6afec2f960f', 'utc': True} (183b) 
Traceback (most recent call last): 
    File "/var/www/virtual/venv/lib/python2.7/site-packages/celery/worker/consumer.py", line 410, in on_task_received 
    connection = self.connection 
KeyError: 'messages.sendnotifies' 

Quand je lance le céleri avec --loglevel=DEBUG il énumère:

[Tasks] 
    . celery.backend_cleanup 
    . celery.chain 
    . celery.chord 
    . celery.chord_unlock 
    . celery.chunks 
    . celery.group 
    . celery.map 
    . celery.starmap 
    . event.notfiy 
    . messages.sendnotifies 
    . money.checktransaction 
    . money.deploypayment 
    . money.invoicepromotion 
    . protocols.plotweight 
    . questionnaire.deploy 
    . questionnaire.suitability 
    . registration.notify 
    . tracking.track 
    . user.checkaccount 
    . user.checkaccounts 
    . user.fixpermissions 
    . user.genpassreset 

Je ne pouvais pas déterminer encore un système, lorsque ça marche et quand pas. Mais j'ai mis à jour tous les paquets pertinents à la dernière version disponible aujourd'hui et cela ne fonctionne toujours pas.

J'espère avoir des idées sur pourquoi cela pourrait ne pas fonctionner et comment je pourrais être en mesure de le réparer. Chaque feedback est très apprécié, car je suis désespéré!

Répondre

Questions connexes