2014-12-16 10 views
9

Ich benutze Sellerie 3.1.16 Broker (mit RabbitMQ) und mehrere Sellerie Arbeiter mit Sellerie Daemonized durch Supervisor. Problem ist mit Aufgaben aktualisieren. Wenn ich meine tasks.py-Datei aktualisiere, führt Sellerie Worker alten Code aus.Sellerie Autoreload funktioniert nicht

Sellerie Start-Befehl:

/home/my_project/bin/celery -B --autoreload --app=my_app.celery:app worker --loglevel=INFO 

I umfassen Aufgaben Datei in django settings.py:

CELERY_IMPORTS = [ 
    'my_app.tasks' 
] 

pyinotify installiert ist und funktioniert (ich glaube so), ein Teil der Sellerie-Protokolle:

[2014-12-16 20:56:00,016: INFO/MainProcess] Task my_app.tasks.periodic_update_task_statistic[175c2557-7c07-43c3-ac70-f4e115344134] succeeded in 0.00816309102811s: 'ok!' 
[2014-12-16 20:56:11,157: INFO/MainProcess] Detected modified modules: ['my_app.tasks'] 
[2014-12-16 20:57:00,001: INFO/Beat] Scheduler: Sending due task my_app.tasks.periodic_update_task_statistic (my_app.tasks.periodic_update_task_statistic) 
[2014-12-16 20:57:00,007: INFO/MainProcess] Received task: my_app.tasks.periodic_update_task_statistic[f22998a9-dcb4-4c29-8086-86dd6e57eae1] 

Also, meine Frage: Wie man Sellerie updaten und neuen Aufgabencode anwenden, wenn sie geändert wurden?

+0

ich keine Antwort habe. Ich starte meine Mitarbeiter immer noch neu, wenn ich Code-Push mache. http://stackoverflow.com/questions/16929264/how-can-i-automatisch-reload-tasks-modules-with-sellery-daemon – pztrick

+0

Das gleiche hier. Ich starte Sellerie am Ende des Deployment-Verfahrens neu. Die Bereitstellung erfolgt mithilfe von Fabric für diese Zwecke. –

+0

Hallo LJ, irgendwelche Updates zu dieser Frage? Konntest du es herausfinden? – Desprit

Antwort

1

Ich habe das gleiche Problem. Während ich es nicht mag, mache ich folgendes, das zuerst .pyc-Dateien überall in meinem aktuellen Verzeichnis entfernt und kompiliert und dann alle Worker neu startet. find . -name "*.pyc" -exec rm {} \; supervisorctl restart all Es scheint seltsam, dass die --autoreload Flagge nichts tut, aber es nicht in meinem Fall.

1

Nur Sellerie lädt die Module, die direkt geladen wurden, nicht auf andere Module, die von den direkten Modulen geladen werden.

Verwandte Themen