Ich habe eine Flaschen-Anwendung, in der ich die Planungsfunktion von APScheduler benötige. Die Frage ist:
Wo starte ich die Scheduler-Instanz?
Ich benutze uwsgi + nginx, um diese Anwendung mit mehreren Arbeitern zu bedienen, würde ich nicht mit mehreren Instanzen von Scheduler enden, die einander nicht beachten würden? Wenn dies korrekt ist, würde ein einzelner Job mehrmals ausgelöst, oder?
Was ist die beste Strategie in diesem Fall, so dass ich am Ende nur eine Scheduler-Instanz habe und trotzdem innerhalb der geplanten Jobs auf den Kontext der Anwendung zugreifen kann?
Diese Frage hat das gleiche Problem, wenn auch mit Gunicorn anstelle von uwsgi, aber die Antwort könnte ähnlich sein.
Nachfolgend ist der Code definiert, der "app" als ein uwsgi aufrufbares Anwendungsobjekt definiert. Die Datei mit diesem Code heißt wsgi.py (nicht wichtig).
%Vor%uWSGI hat eine Funktion namens Mules (siehe: Ссылка ), mit denen Sie sie verwenden können Starten Sie ein Skript unter dem Master, das nicht über Socket erreichbar ist. Es ist entworfen, um eine Arbeit von der Hauptanwendung mit Schedulern und für die Signalverarbeitung zu entladen, so scheint es perfekt für die Bereitstellung eines Scheduler innerhalb der uwsgi-Stack.
UWSGI hat eine Funktion uwsgi.worker_id (). Wenn Sie den Scheduler in einem bestimmten Worker bedingt starten, erhalten Sie nicht mehrere Scheduler-Instanzen.
Tags und Links python worker flask uwsgi apscheduler