每隔5分钟执行一次任务的Python脚本会随机保持空闲状态,直到ctrl-c

时间:2018-08-04 20:34:31

标签: python sleep

我有一个程序,每5分钟执行一系列HTTP请求。这是一个非常简化的版本,所以您有了主意:

from time import sleep

class Scanner:
    def perform_scan(self):
        self.log("Scanning...")
        make_blocking_request()
        # ... more HTTP requests, logging of some strings, writing to DB...

if __name__ == '__main__':
    scanner = Scanner()

    counter = 0
    while True:
        scanner.perform_scan()
        counter += 1
        scanner.log('Pause #', counter)
        sleep(300)

程序调用{​​{1}},然后睡眠5分钟。奇怪的是,当我不看终端时,脚本...会暂停执行。这是一个示例日志,向您展示我的意思:

perform_scan

看到2018-08-04 20:17:38 DESKTOP-VK5JO51 Scanner.py[2568] INFO Pause # 13 2018-08-04 20:22:38 DESKTOP-VK5JO51 Scanner.py[2568] INFO Scanning... 2018-08-04 20:22:39 DESKTOP-VK5JO51 Scanner.py[2568] INFO Some string 2018-08-04 20:22:40 DESKTOP-VK5JO51 Scanner.py[2568] INFO Some string 2018-08-04 20:22:41 DESKTOP-VK5JO51 Scanner.py[2568] INFO Some string 2018-08-04 20:22:43 DESKTOP-VK5JO51 Scanner.py[2568] INFO Pause # 14 2018-08-04 20:27:43 DESKTOP-VK5JO51 Scanner.py[2568] INFO Scanning... 2018-08-04 21:19:17 DESKTOP-VK5JO51 Scanner.py[2568] INFO Some string 2018-08-04 21:19:25 DESKTOP-VK5JO51 Scanner.py[2568] INFO Some string 2018-08-04 21:19:25 DESKTOP-VK5JO51 Scanner.py[2568] INFO Some string 2018-08-04 21:19:26 DESKTOP-VK5JO51 Scanner.py[2568] INFO Some string 2018-08-04 21:19:27 DESKTOP-VK5JO51 Scanner.py[2568] INFO Some string 2018-08-04 21:19:29 DESKTOP-VK5JO51 Scanner.py[2568] INFO Some string 2018-08-04 21:19:29 DESKTOP-VK5JO51 Scanner.py[2568] INFO Some string 2018-08-04 21:19:31 DESKTOP-VK5JO51 Scanner.py[2568] INFO Some string 2018-08-04 21:19:31 DESKTOP-VK5JO51 Scanner.py[2568] INFO Some string 2018-08-04 21:19:32 DESKTOP-VK5JO51 Scanner.py[2568] INFO Some string 2018-08-04 21:19:35 DESKTOP-VK5JO51 Scanner.py[2568] INFO Pause # 15 2018-08-04 20:27:43之间的中断吗?这是怎么回事:

  1. 我在屏幕上看到2018-08-04 21:19:17,当时钟显示2018-08-04 20:22:43 DESKTOP-VK5JO51 Scanner.py[2568] INFO Pause # 14
  2. 我按下了21:19
  3. 然后才出现(!)ctrl-c
  4. 随后的其他几行,即脚本已恢复执行

这很奇怪,原因有很多。第一,2018-08-04 20:27:43 DESKTOP-VK5JO51 Scanner.py[2568] INFO Scanning...没有停止脚本执行。第二,ctrl-c上的日志仅在我在2018-08-04 20:27:43左右的击键之后出现。最后,我不明白我的21:19是如何使脚本重生的,因为它没有收听用户输入或类似的内容。

现在您可能会认为这是一些屏幕缓冲问题。但是应用程序将其请求的结果保存在数据库中。数据库中的条目与上面的日志一致:在ctrl-c20:27期间,数据库中未保存任何内容。

有人知道发生了什么事吗?

0 个答案:

没有答案