2017-12-18 2 views
1

Wie Titel beschreiben, erstelle ich einen separaten Thread, um eine lange Aufgabe in Flask zu tun.Der Thread läuft noch, wenn der flask-Server beendet wird

import schedule 
import time 

start_time = time.time() 


def job(): 
    print("I'm working..." + str(time.time() - start_time)) 


def run_schedule(): 
    while True: 
     schedule.run_pending() 
     time.sleep(1) 

Wenn I Ctrl + c drücken den Server, den Faden noch prints zu beenden. Wie kann ich den Thread stoppen, wenn der Server beendet wird?

+0

haben Sie versuchten __ctrl + z__ – babygame0ver

+0

dann fügen Sie Ihren Code in versuchen, außer, behandeln Tastaturunterbrechung und auf diesem Ereignis pause/stop Ihren Thread – Gahan

+0

** Strg + z ** kann funktionieren, gibt es aber eine andere Möglichkeit, wie main_thread lebendig zu überprüfen. – CoXier

Antwort

1

Sie können Ihren Thread als daemon festlegen.

Ein Thread läuft, bis er selbst endet oder explizit gelöscht wird.

Ein Daemon-Thread wird mit den gleichen Bedingungen ausgeführt, und wenn mindestens ein anderer nicht-dämonischer Thread ausgeführt wird: Wenn Sie Ihren Hauptthread beenden und keine anderen Threads ausgeführt werden, wird auch der gesamte dämonische Thread beendet.

wenn Sie threading-Modul verwenden, können Sie den Thread als dämonisch durch Änderung seiner boolean gesetzt werden:

import threading 
your_thread.daemon = True 

wenn Sie mit Thread-Modul, sollte es eines der kwargs

sein
+0

Danke für Ihre Antwort. – CoXier

Verwandte Themen