2017-06-14 117 views
-1

从python程序中重新启动ubuntu系统服务的最佳做法是什么?该服务负责启动将从其中调用重新启动的相同程序。服务脚本具有停止,启动和重新启动方法。 stop方法应该终止最初在start方法中执行的正在运行的进程。我一直在python中使用subprocess.call方法,但是程序有一个Flask会话,当我在程序上调用重新启动时,脚本开始执行,但我得到一个“Address already in use error”,表示该会话尚未结束。在运行Flask会话的情况下从python程序重新启动服务

类似的问题:Python spawn off a child subprocess, detach, and exit

回答

3

最好的办法是一个信号(例如SIGTERM)发送到所有进程开始启动方法。 “地址已在使用中”错误可能是由于Flask程序没有正确关闭引起的。

+0

谢谢,但我已经在stop()方法中使用“pkill”来杀死原始进程。从终端执行服务重启时,我没有任何问题。只有当我从运行烧瓶程序的python中调用一个服务重启时。我会想,因为subprocess.call产生一个新的进程,它会杀死它被调用的进程,但也许有冲突。 – rigger12

+1

我通常通过让产生的进程从其父进程中解脱出来来处理这种情况。对我来说,最简单的方法是运行包装在shell脚本中的程序,并让shell将其关闭。 –

+0

谢谢你的建议。我正在考虑用python中的os.fork()来做这件事。 – rigger12

相关问题