我有一个Python程序,可能需要几天才能完成在我的云托管的Ubuntu机器上运行。在目前的阶段,只有在我打开shell的情况下才能看到程序的进度。 print("processed: " + str(finalCount) + " files.")
- 简单明了。
自学习of this trick以来,我认为如果我可以检查程序的进度而不必打开shell并使用ps -e
有没有一种简单的方法可以达到这个目的?
我有几个想法,但我不确定它们的可行性(因为性能至关重要。这些程序可以持续数天到数周)。第一个想法是建立一个非常简单的MySQL数据库,每次任务完成执行时都会更新。不知道会给服务器带来多大的压力 - 或者这是否是一个有效的想法。
第二个想法:让程序将其状态附加到简单的日志文件中。然后,如果我很好奇,我可以简单地下载当前版本的日志文件。
有什么想法?想法?建议?
答案 0 :(得分:2)
答案 1 :(得分:1)
对于这个用例,数据库不是一个好主意。
使用python logging模块记录任务的状态/进度,它非常轻,如果您没有快速更新/记录,也不会有太大问题。
答案 2 :(得分:0)
如answer linked to the question you cite中所述,您可以使用GNU屏幕跟踪长时间运行的进程。我经常在长时间运行的过程中使用它并写了blog post with the most common command arguments。
使用以下方式开始屏幕会话:
screen -S sessionname
为了找到屏幕会话,稍后使用sessionname为其命名。开始一个漫长的过程。然后用以下内容分离会话:
CTRL-A-D
您可以稍后重新附加会话:
screen -r sessionname
同时,写入文本日志听起来是个好主意。请查看解释how to write log files with python的官方文档。