罗同学 发表于 2022-9-14 12:16:07

求助:能否用一个代码检测另一个代码的运行状态

本帖最后由 罗同学 于 2022-9-14 12:17 编辑

事情的经过是这样的,最近有好多重复且枯燥的审批工作,用selenimu写了一个自动审批的代码,但有时候会被莫名其妙的人提交的错误内容打断(且不好设置过滤),需要在办公室内网环境下审批,无法在家里电脑运行,下班挂机审批程序挂了之后就又要痛苦的在手机上手动批。
有没有这样一种可能,假设审批的代码叫做A.py,用另一个代码(B.py),去检测A的运行状态,如果譬如每15分钟检测一次,如果检测到A正常运行,就休眠15分钟,检测到A报错中止的话,就重新运行一次A.py

dolly_yos2 发表于 2022-9-14 12:48:42

个人认为这个需求可能无需另一个程序去监测,您可以考虑一下这样的结构是否可行
while True:
    try:
      <实际工作代码>
    except:
      pass
或者在启动您的脚本时外加一层循环,如(对 PowerShell )
while($true){<启动您程序的代码,如 python A.py>;sleep 1;}
这样即可在退出后无条件等待一秒重新启动。

不清楚您具体的用途,可能审批还是比较重要和关键的,相信您一定能很好的把控,还是多嘴提醒您一下做好测试避免错误导致不愿看到的后果

kogawananari 发表于 2022-9-14 13:24:43

pm2 start main.py -x --interpreter python3

(最后这个参数python3是你的环境变量名 Linux下一般叫python3)

z5560636 发表于 2022-9-14 13:48:58

本帖最后由 z5560636 于 2022-9-14 13:50 编辑

你描述的情况不需要整的这么复制

直接用异常机制就可以了
try:
    pass
except:
    pass

当然,如果你决意那么做的话,也不是按照你描述的流程来的,你只需要定时启动一个线程,检查你的处理任务的线程是否挂掉,挂掉的话,就重启处理任务的线程。

罗同学 发表于 2022-9-14 14:14:35

try竟然可以放到while里面{:10_266:}
刚写了个递归的版本:
def main():
    try:
      '工作代码'

    finally:
      main()

罗同学 发表于 2022-9-14 14:15:53

z5560636 发表于 2022-9-14 13:48
你描述的情况不需要整的这么复制

直接用异常机制就可以了


刚吃完饭想到了一个异常套递归的{:10_250:}
def main():
    try:
      '工作代码'

    finally:
      main()

罗同学 发表于 2022-9-14 14:17:11

kogawananari 发表于 2022-9-14 13:24
pm2 start main.py -x --interpreter python3

(最后这个参数python3是你的环境变量名 Linux下一般叫pyt ...

大佬、你这我已经看不懂了{:10_266:}
写了一个try...finally套用递归的

kogawananari 发表于 2022-9-14 15:57:38

罗同学 发表于 2022-9-14 14:17
大佬、你这我已经看不懂了
写了一个try...finally套用递归的

这就是一个管理后台任务的命令行工具
一般是给网站挂了重启用
最基本的也可以代替nohup命令

{:10_327:}

罗同学 发表于 2022-9-18 09:37:43

kogawananari 发表于 2022-9-14 15:57
这就是一个管理后台任务的命令行工具
一般是给网站挂了重启用
最基本的也可以代替nohup命令


{:10_303:}小白表示respect
页: [1]
查看完整版本: 求助:能否用一个代码检测另一个代码的运行状态