2017-07-07 164 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