gpt4 book ai didi

python - 每隔几分钟在 linux 机器上运行一个 python 脚本,前提是它还没有运行

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:35:26 24 4
gpt4 key购买 nike

我有一个 python 脚本,它必须每 3 分钟运行一次。该脚本运行一个进程虽然可以运行超过 10 分钟。因此我需要确保如果它已经在运行它不应该运行。我需要在没有任何数据库干扰的情况下执行此操作。我使用的方法是通过 crontab 中的以下命令设置一个 cron。

*/3 * * * * sudo ps aux|grep -v grep|grep "python XMLProcessor.py"
|| cd /home/ubuntu/git/perpule-python-subscriber; sudo python XMLProcessor.py

运行流畅。但这里的问题是,偶尔,即使在进程结束后,命令 sudo ps aux|grep -v grep|grep "python XMLProcessor.py" 仍然会给出输出,因此python 脚本不运行。

请建议我更好的方法或纠正我正在使用的方法。感谢所有建议。

最佳答案

您使用的方法存在一些问题,因为 ps 会报告“意外情况”。你确定你的 python 程序有一个唯一的名字吗?会不会是存在竞争条件(它可以运行程序两次)?

这样做的典型方法是在进程开始时触摸一个文件,然后删除它和结束:

如果 [ ! -f.工作];然后
触摸.working &&\
python do_something.py &&\
rm.working
fi

然后您可以通过检查该文件来检查它是否正常工作。但是,这种方法存在多个问题:如果进程崩溃会怎样?你应该删除触摸的文件吗?是否可以为每次可能的崩溃删除它?然后你需要添加超时,它开始变得复杂。

然后,正确且更安全的解决方案是使用某种服务器或工具来检查您的作业是否正在运行,如果没有则运行它。我用过luigi做类似的事情,它与 python 代码集成得很好,所以你可以试一试。

关于python - 每隔几分钟在 linux 机器上运行一个 python 脚本,前提是它还没有运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49797295/

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