V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
ldz
V2EX  ›  问与答

有两个想一直跑在后台的 shell 命令想用 Python 完成挂掉之后自动重启

  •  
  •   ldz · 2020-09-02 16:26:48 +08:00 · 786 次点击
    这是一个创建于 1544 天前的主题,其中的信息可能已经有所发展或是发生改变。
    如题
    因为对 Python 多线程 /多进程 /asyncio 的理解不是很深 所以请教下各位大佬
    大致需求就是用 Python 跑两个 shell 命令,这两个 shell 命令可能时不时会挂掉
    挂掉之后需要 Python 这边自动重启这两个命令


    关于为什么不直接用 shell
    因为这两个命令里的一些参数需要一些 Python 库获取

    比较 low 的办法是起两个如下的同步程序

    import subprocess
    import time
    p = subprocess.Popen(cmd,shell=True)
    while True:
    try:
    stopped = p.poll()
    except:
    stopped = True
    if stopped:
    p = subprocess.Popen(cmd,shell=True)
    time.sleep(60)

    现在想请教下有没有办法用异步的方式实现在同一个脚本里自动重启这两个命令?
    第 1 条附言  ·  2020-09-09 11:45:10 +08:00
    用 subprocess.Popen 其实就能实现

    定时判断下 p.poll()的值就能知道子进程退出了没有
    目前尚无回复
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2935 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 14:19 · PVG 22:19 · LAX 06:19 · JFK 09:19
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.