2017-12-18 17 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

이 가지고있는 kwargs로 중 하나 여야합니다 __ctrl + z__ – babygame0ver

+0

을 시도한 다음 키보드 인터럽트를 처리하고 해당 이벤트에서 일시 중지/스레드를 중지하십시오. – Gahan

+0

** Ctrl + Z **는 작동하지만 main_thread를 확인하는 등의 다른 방법이 있습니다. – CoXier

답변

1

스레드를 daemon으로 설정할 수 있습니다.

스레드가 종료 될 때까지 스레드가 실행되거나 명시 적으로 종료됩니다.

데몬 스레드는 동일한 조건으로 실행되고 하나 이상의 다른 데모되지 않은 다른 스레드가 실행중인 경우 : 즉, 주 스레드를 종료하고 다른 스레드가 실행 중이 아니면 모든 데몬 스레드도 종료됩니다.

당신이 스레딩 모듈을 사용하는 경우, 당신은 자신의 부울을 변경하여 악마의 같은 스레드를 설정할 수 있습니다 : 당신이 스레드 모듈을 사용하는 경우

import threading 
your_thread.daemon = True 

, 그것은

+0

답변 해 주셔서 감사합니다. – CoXier