如何知道正在运行的脚本是否会死?

2024-05-29 03:05:10 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我对编程有点陌生,而且大多是自学成才的,如果这个问题有点站在新手的角度,我很抱歉。在

我有一个长时间运行的python脚本(例如,它每几秒钟下载一次页面,一次下载几天)类似于web应用程序的监控脚本。在

有时候,会有东西破坏它,需要重新启动。我已经把这些事件降到了最低限度,但它仍然每隔几天发生一次,当它真的被杀死时,如果我几个小时都不注意到,那可能是个坏消息。在

现在它正在VPS上的屏幕会话中运行。在

有人能给我指出一个正确的方向吗?只要知道脚本何时终止/并让它自动重新启动?在

这是用Bash写的吗?还是别的什么?我以前从来没有做过这样的事情,不知道从哪里开始,甚至不知道从哪里开始寻找信息。在


Tags: 脚本web应用程序屏幕vps编程事件页面
3条回答

我相信在循环中执行python脚本的包装器bash脚本应该能做到这一点。在

while true; do
    # Execute python script here
    echo "Web app monitoring script disrupted ... Restarting script."
done

希望这有帮助。在

这取决于你想要防范的失败类型。如果只是脚本崩溃,最简单的方法是将主函数包装在try/except中:

import logging as log

while True:
    try:
        main()
    except:
        log.exception("main() crashed")

如果有什么东西正在杀死Python进程,那么在shell循环中运行它可能是最简单的方法:

^{pr2}$

如果它崩溃是因为机器坏了…好吧…奎斯库斯托迪伊普斯库斯托德?在

但是,要直接回答您的问题:检查它是否从shell运行的最简单方法是grep ps的输出:

ps | grep "python checker.py" 2>&1 > /dev/null
running=$?

当然,这不是万无一失的,但总的来说已经足够好了。在

你可以试试supervisord,它是一个控制守护进程的工具。在

相关问题 更多 >

    热门问题