【问题标题】:python while True loop ends eventually and silently, how to keep it running?python while True循环最终无声地结束,如何保持运行?
【发布时间】:2014-04-04 05:52:30
【问题描述】:

我有一个

while True:
   poll_some_data_from_a_server_and_save_it_to_a_file()
   time.sleep(5)

循环。它运行了一段时间,但最终只是停止而没有错误。我在 AWS 上运行它

python file.py > logfile &

并且日志文件中没有关于发生了什么的提示,python 进程在一段时间后在 htop 中完全丢失。我怎样才能调试发生的事情并让它运行更长时间?

谢谢!

【问题讨论】:

  • 你也试过重定向stderr吗?
  • @IgnacioVazquez-Abrams:鉴于他问“我该如何进行调试”,您发布的内容绝对是一个答案。

标签: python linux bash loops


【解决方案1】:

试试在后台运行进程的 nohup:

nohup python file.py > logfile &

输出将记录在名为nohup.out的文件中

【讨论】:

  • 谢谢!我现在正在尝试,并将报告它是如何工作的。试图理解 bash 重定向,它类似于 &> 或 2> 吗?
【解决方案2】:

你可以像这样创建一个无限循环:

While 1:
    try:
        data = poll_some_data_from_a_server_and_save_it_to_a_file()
        with open("FileName.txt", "a") as f:
        for n in data:
            f.write(n + "\n")
        f.close()
    except IOError as e:
        print e

如果出现问题,它将尝试将在 poll 中找到的每个项目写入文件,并将其捕获并打印到屏幕上。

【讨论】:

  • 这不是正确的语法,while 1 == True 至少不是 Pythonic。
  • @nneonneo 虽然它可能不是“pythonic”,但语法是正确的,它不会在交互式 python 中引发错误。我已经修改了它。这样更好吗?
  • 我可以看到它背后的想法,但我不确定它是一个 IOError,有没有办法捕获任何错误并打印它?
猜你喜欢
  • 1970-01-01
  • 2014-12-01
  • 2017-04-03
  • 1970-01-01
  • 2013-09-30
  • 1970-01-01
  • 1970-01-01
  • 2022-11-23
  • 1970-01-01
相关资源
最近更新 更多