2017-07-07 167 views
0

我有一個Python腳本在命令行中運行硒框架,並不斷運行,以控制Chrome做後臺數據處理和監控。我的簡化代碼結構如下隨時隨地暫停/停止/命令Python腳本的最佳方法是什麼?

while True: 
    Do_task1() # a blocking function 
    Do_task2() # another blocking fucntion 
    ... # calling many blocking functions below, including wait(), time.sleep() 

我需要一種方法來隨時隨地中斷腳本暫停,安全地終止和下達指令。什麼是最好的方法來做到這一點? 我想過,想的幾種方法,但我不完全知道如何處理它:

  1. 我嘗試這樣做:

    if msvcrt.kbhit(): 
        key = msvcrt.getch().decode("utf-8").lower() 
        if key == "j": 
         self.setting1 = True 
        elif key == "k": 
         self.setting2 = True 
    

    while循環,但它通過在對我的按鍵做出反應之前,有一羣阻塞的電話。而且這個命令並不是實時接受我的鍵盤輸入,也就是說我會輸入一個字符輸入,而且我認爲它會在後臺緩衝區中,然後一旦代碼執行達到上面的代碼,它就開始執行東東。 對於終止腳本,我只是在CMD窗口中執行Ctrl-C,我不認爲這是最好的方式,我應該正確地結束程序結束後臺進程,如Chromedriver。

  2. 我以爲有一個異步運行的GUI,我可以有按鈕暫停和終止腳本。但我不確定如何處理它,或者如果這是一個好主意,甚至嘗試。歡迎任何建議。

  3. 使用腳本監控/工作流程監控框架,如AirBnB's Airflow或Luigi。我只是對此做了簡短的研究。

A related question但我並不需要返回正是它的不放過

回答

0

我通常使用嘗試,除了要做到這一點

while True: 
    try: 
     Do_Task1() 
     Do_Task2() 
    except KeyBoardInterrrupt: 
     break