如何使用进程处理应用程序的延迟启动



我有一个在单独进程中启动的应用程序。进程保持活动状态,直到应用发现问题然后退出。

如何处理进程需要报告应用程序是否成功启动的情况?我能想到的几种方法,

  1. 等待一段时间,然后检查进程是否仍处于活动状态。
  2. 一段时间后检查进程状态。 - 这种方法不适合我的用例。

我相信这个问题有更优雅的解决方案。

from multiprocessing import Process, ProcessError
import time 
from flask import Flask
def start_app():
    app = Flask(__name__)
    @app.route('/')
    def hello_world():
       return 'Hello World'
    app.run()  
    # ----> After few milliseconds (not known), there is an exception (port in use, run time exception) and process will exit at that time. 
p = Process(target=start_app)
p.start()
p.is_alive() # ----> True
time.sleep(5) 
p.is_alive() # ----> False or still True

如果我睡觉,没有办法,我可以确定该过程不会在下一毫秒内退出。

提前谢谢。

您可以使用

Process.join ,它将阻塞直到进程p终止,这样等待时间永远不会大于进程需要完成的时间。

您也可以在超时的情况下使用它,这样它就会阻塞,直到p终止达到超时:

try:
    p.join(10)
except multiprocessing.TimeoutError:
    logging.info("The process lasted more than 10 seconds")

最新更新