ldz
V2EX  ›  问与答

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

  •  
  •   ldz · Sep 2, 2020 · 1323 views
    This topic created in 2131 days ago, the information mentioned may be changed or developed.
    如题
    因为对 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)

    现在想请教下有没有办法用异步的方式实现在同一个脚本里自动重启这两个命令?
    Supplement 1  ·  Sep 9, 2020
    用 subprocess.Popen 其实就能实现

    定时判断下 p.poll()的值就能知道子进程退出了没有
    No Comments Yet
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   1356 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 17:09 · PVG 01:09 · LAX 10:09 · JFK 13:09
    ♥ Do have faith in what you're doing.