Ich habe eine Flask-Anwendung, mit der ich eine Sellerie-Aufgabe starten kann. Diese Aufgabe ist eine Art Daemon, den ich nur einmal starten möchte. Wenn es gestartet wird, will ich nur seinen Status überwachen, eine Nachricht von der Aufgabe anzeigen usw. Das funktioniert alles gut.Wie kann ich wissen, ob eine Sellerie-Aufgabe bereits gestartet wurde?
Was ich nicht herausfinden kann, wie es geht, ist, wie ich in der Flaschen-Anwendung die Aufgaben-ID bekommen kann, sobald sie gestartet ist. Wenn ich die Aufgabe starte kann ich
tun, also habe ich die ID der Aufgabe.
Nun stellen Sie sich vor, ich starte den Sellerie-Server neu oder ich erledige die Aufgabe, wie kann ich überprüfen, ob eine solche Aufgabe ausgeführt wird? Und wenn es läuft, wie kann ich seine ID abrufen?
Was ich jetzt versucht: eine Sellerie-Server laufen, die eine Flasche Anwendung ausführen, eine Sellerie Aufgabe von whithin den Kolben Anwendung starten, laden Sie die Haupt-Seite zu sehen, ob ich die Aufgabe ID abrufen kann:
@main.route('/', methods=['GET', 'POST'])
def index():
"""Renders the home page."""
_t = celery.current_task
if _t is not None:
t_id = toto.request.id
return render_template('main/index.html', title='Main page')
aber die Variable _t
ist immer None
, auch wenn eine Sellerie-Aufgabe läuft.
Beachten Sie, dass dies eine schlechte Methode ist, Sellerie zu verwenden. Es ist nicht für eine lange laufende Aufgabe konzipiert. Ziemlich genau für das, was Sie hier fragen. Sie möchten wahrscheinlich einen ['Manager'] (https://docs.python.org/3/library/multiprocessing.html#managers). – davidism
Welches Ergebnis Backend verwendest du? – georgexsh
Redis für Sellerie Backend – GuillaumeA