2017-12-18 11 views
1

タイトルで説明するように、別のスレッドを作成してFlaskで長いタスクを実行します。フラスコサーバが終了したときにスレッドがまだ実行されています

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) 

私は、サーバー、まだprintsスレッドを終了するCtrl + cを押してください。 サーバが終了したらスレッドを停止できますか?

+0

持っていなければなりませんあなたは__ctrl + z__ – babygame0ver

+0

を試してみて、キーボードの割り込みを処理してそのイベントを一時停止/停止させてください。 – Gahan

+0

** ctrl + z **は動作しますが、main_threadをチェックするなどの方法があります。 – CoXier

答えて

1

スレッドをdaemonに設定するとよいでしょう。

スレッドは、スレッドが終了するまで実行されるか、明示的に強制終了されます。

デーモンスレッドは同じ条件で実行され、少なくとも1つの他の非デーモンスレッドが実行されている場合:つまり、メインスレッドを終了して他のスレッドが実行されていない場合、すべてのデーモンスレッドも終了します。

あなたがthreadingモジュールを使用している場合、あなたは彼のブール値を変更することにより、鬼神のようスレッドを設定することがあります。

import threading 
your_thread.daemon = True 

あなたがスレッドモジュールを使用している場合、それはkwargsからの1

+0

あなたの答えをありがとう。 – CoXier

関連する問題