Ich bin eine Website läuft Django 10, RabbitMQ und Sellerie 4 auf CentOS 7.Django Sellerie Admin-Beat-Cron Planen Sie regelmäßige Aufgabe nicht aktualisiert Wirksam
Mein Sellerie Beat- und Sellerie Worker Instanzen werden von Supervisor kontrolliert und Ich benutze den Django Sellerie Datenbank Scheduler.
Ich habe eine Cron-Stil Aufgabe mit dem Cronsheduler in Django-Admin geplant.
Wenn ich Sellerie-Beat- und Worker-Instanzen starte, wird der Job wie erwartet ausgelöst.
Aber wenn eine Änderung der Zeitplan Zeit in Django-Admin dann die Änderungen nicht abgeholt werden, es sei denn ich die Sellerie-Beat-Instanz neu starten.
Gibt es etwas, das ich vermisse oder muss ich meinen eigenen Scheduler schreiben?
Sellerie Beat, mit dem 'django_celery_beat.schedulers.DatabaseScheduler' lädt den Zeitplan aus der Datenbank. Gemäß dem folgenden Dokument https://media.readthedocs.org/pdf/django-celery-beat/latest/django-celery-beat.pdf sollte dies Sellery Beat zum Nachladen zwingen:
Ein Zeitplan, der in einem bestimmten Intervall (z. B. alle 5 Sekunden) ausgeführt wird. • django_celery_beat.models.CrontabSchedule A Zeitplan mit Felder wie Einträge in cron: Minute Stunden-Tag-of-Woche DAY_OF_MONTH month_of_year.
django_cellery_beat.models.PeriodicTasks Dieses Modell wird nur als Index verwendet, um zu verfolgen, wann sich der Zeitplan geändert hat. Immer wenn Sie eine PeriodicTask aktualisieren, wird auch ein Zähler in dieser Tabelle inkrementiert, der den Sellerie-Beat-Service anweist, den Zeitplan von der Datenbank neu zu laden. Wenn Sie periodische Aufgaben in der Masse aktualisieren, müssen Sie den Zähler manuell aktualisieren:
from django_celery_beat.models import PeriodicTasks
PeriodicTasks.changed()
Aus dem obigen I des Sellerie Beat-Prozess erwarten würde die Tabelle regelmäßig auf Änderungen zu überprüfen.
möglich duplicate von: http://stackoverflow.com/questions/21666229/sellery-auto-reload-on-any-changes –
Denke nicht, dass es ein Duplikat ist, wie ich Sellerie Beat, um zu erkennen, wenn der Zeitplan hat wurde in der Datenbank aktualisiert. – Steve
Definitiv, kein Duplikat.Die verlinkte Frage redet darüber, Sellerie-Arbeiter neu zu laden, wenn sich Django-Einstellungen ändern (eine statische '.py'-Datei), nicht über 'Sellerie-Beat' und neu zu laden, wenn sich Datenbank-Aufgaben ändern. – Ruben