gpt4 book ai didi

python - 使用 Python 持续监控程序/进程

转载 作者:太空狗 更新时间:2023-10-29 20:52:27 29 4
gpt4 key购买 nike

我正在尝试持续监控一个基本上是 Python 程序的进程。如果程序停止,那么我必须重新启动程序。我正在使用另一个 Python 程序来执行此操作。

例如,假设我必须不断运行一个名为 run_constantly.py 的进程。我最初手动运行该程序,将其进程 ID 写入文件“PID”(位于 out/PROCESSID/PID 位置)。

现在我运行另一个程序,该程序具有以下代码,以在 Linux 环境中监视程序 run_constantly.py:

def Monitor_Periodic_Process():

TIMER_RUNIN = 1800
foo = imp.load_source("Run_Module","run_constantly.py")
PROGRAM_TO_MONITOR = ['run_constantly.py','out/PROCESSID/PID']
while(1):
# call the function checkPID to see if the program is running or not
res = checkPID(PROGRAM_TO_MONITOR)
# if res is 0 then program is not running so schedule it
if (res == 0):
date_time = datetime.now()
scheduler.add_cron_job(foo.Run_Module, year=date_time.year, day=date_time.day, month=date_time.month, hour=date_time.hour, minute=date_time.minute+2)
scheduler.start()
scheduler.get_jobs()
time.sleep(TIMER_NOT_RUNIN)
continue
else:
#the process is running sleep and then monitor again
time.sleep(TIMER_RUNIN)
continue

我没有在此处包含 checkPID() 函数。 checkPID() 主要检查进程 ID 是否仍然存在(即程序是否仍在运行),如果不存在,则返回 0。在上面的程序中,我检查是否 res == 0,如果是,然后我使用 Python 的调度程序来调度程序。然而,我目前面临的主要问题是,一旦我安排了 run_constantly .py 使用 scheduler.add_cron_job() 函数。所以如果程序 run_constantly.py 崩溃了,下面的程序仍然认为 run_constantly.py 正在运行(因为两个进程 ID 相同),因此继续进入else 循环休眠并再次监控。

谁能告诉我如何解决这个问题?有没有一种简单的方法可以持续监控程序并在它崩溃时重新安排它?

最佳答案

有很多程序可以做到这一点。

在 Ubuntu 上有 upstart (默认安装)

很多人喜欢http://supervisord.org/

monit正如@nathan所述

如果您正在寻找 Python 的替代品,可以使用刚刚发布的名为 circus 的库这看起来很有趣。

几乎每个 Linux 发行版都可能内置了其中一个。

选择实际上取决于您更喜欢哪一个,但是使用其中一个比您自己编写要好得多。

希望对你有帮助

关于python - 使用 Python 持续监控程序/进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13598487/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com