Ich verwende Flask als REST-Endpunkt, der eine Anwendung Anfrage zu einer Warteschlange hinzufügt. Die Warteschlange wird dann von einem zweiten Thread verbraucht.Python Flask shutdown Ereignishandler
server.py
def get_application():
global app
app.debug = True
app.queue = client.Agent()
app.queue.start()
return app
@app.route("/api/v1/test/", methods=["POST"])
def test():
if request.method == "POST":
try:
#add the request parameters to queue
app.queue.add_to_queue(req)
except Exception:
return "All the parameters must be provided" , 400
return "", 200
return "Resource not found",404
client.py
class Agent(threading.Thread):
def __init__(self):
threading.Thread.__init__(self)
self.active = True
self.queue = Queue.Queue(0)
def run(self):
while self.active:
req = self.queue.get()
#do something
def add_to_queue(self,request):
self.queue.put(request)
Gibt es einen Shutdown-Ereignishandler in der Flasche, so dass ich kann der Verbraucher Faden sauber Abschaltung, wenn der Kolben App Abschaltung ist (wie wenn der Apache-Service ist neu gestartet)?
Ich benutze dies und es funktioniert gut. Vielen Dank. Übrigens behandelt atexit die Ctrl C richtig – arturvt