【问题标题】:What is the best way to pause/stop/command a Python script anytime anywhere?随时随地暂停/停止/命令 Python 脚本的最佳方法是什么?
【发布时间】:2017-12-11 04:13:35
【问题描述】:

我有一个 Python 脚本在命令行中运行 selenium 框架并持续运行以控制 Chrome 进行后台数据处理和监控。我的简化代码结构如下

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 但我不需要返回它离开的确切位置

【问题讨论】:

    标签: python selenium automation frameworks monitoring


    【解决方案1】:

    我通常使用 try 和 except 来做到这一点

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-05
      • 1970-01-01
      • 2010-09-26
      • 1970-01-01
      相关资源
      最近更新 更多