2014-09-11 3 views
5
  1. Je ne sais pas si c'est a bug ou s'il y a un problème de configuration.
  2. Objectif: debug/modifier les tâches de Céleri sans travailleur de redémarrer manuellement chaque fois que je fais un petit changement

J'ai configuré Céleri + RabbitMQ. Tout fonctionne.Céleri ne fonctionne pas avec RabbitMQ avec l'option "--autoreload"

Ajout d'une option --autoreload à la commande celery -A proj worker --loglevel=debug et arrête d'enregistrer sur ce point:

[2014-09-11 19:22:00,447: DEBUG/MainProcess] | Worker: Hub.register Autoreloader... 

Sans elle:

[2014-09-11 19:37:34,316: DEBUG/MainProcess] | Worker: Hub.register Pool... 
[2014-09-11 19:37:34,317: DEBUG/MainProcess] basic.qos: prefetch_count->16 
[2014-09-11 19:37:36,275: DEBUG/MainProcess] pidbox received method enable_events() [reply_to:None ticket:None] 
[2014-09-11 19:37:36,275: INFO/MainProcess] Events of group {task} enabled by remote. 

Tout le reste fonctionne très bien. RabbitMQ reçoit un message après

celery call tasks.update 

Il existe des connexions à partir de Céleri. Celtic ne dit simplement pas à Celery de commencer une tâche.

Cela ressemble à un problème de connexion, mais je ne sais pas ce que c'est.
Si vous pouvez aider avec s'il vous plaît écrivez.

Répondre

1

Il y a un bogue dans le céleri à la ligne de céleri/travailleur/autoreload.py 67

Ce correctif de bug a été engagé à maîtriser: https://github.com/pashinin/celery/commit/92b52db6eeeb75494700ffe807ecd4c1fe6b0643

vous pouvez patcher la bibliothèque en ligne de changement de 67 autoreload. py de

for chunk in iter(lambda: f.read(2 ** 20), ''): 

à

for chunk in iter(lambda: f.read(2 ** 20), b''): 

Af Si vous avez déjà une tâche créée, elle ne sera PAS recréée et cette tâche ne sera pas mise à jour après le rechargement du module. Les tâches rechargées deviennent actives uniquement après les avoir exécutées une fois de plus.

Les développeurs de céleri ne semblent pas disposés à résoudre ce problème très tôt. Jusque-là vous avez deux options:

  1. La tâche mise à jour doit être exécutée avant qu'une nouvelle soit prise en compte.

  2. Redémarrez le travailleur de céleri après une tâche mise à jour

Questions connexes