python subprocess 启动nginx,重启python时提示端口占用

python subprocess 启动nginx,重启python时提示端口占用

在centos服务器上运行了python脚本,用于启动、重载和关闭nginx服务,python脚本使用了Flask进行监听(端口是5002),并且使用supervisor进行脚本管理。
下面是脚本启动nginx的方法:

subprocess.call('/var/nginx/sbin/nginx -c /var/nginx/conf/nginx.conf', shell=True)

现在的问题是,如果脚本做了调整,需要进行脚本重载,即使用 supervisorctl restart ***** ,就会报错,说端口已经被占用,使用 netstat -anp |grep 5002 发现是被nginx占用了, 关闭nginx之后,可以重载成功。

所以,为了避免类似问题,应该使用什么方法从python脚本中启动nginx服务呢?


回答:

通过subprocess.Popen执行方法,配置close_fds=True可以解决这个端口占用的问题,不过会产生一个defunct(僵尸)进程。目前暂时只能用这种方法。

subprocess.Popen('/var/nginx/sbin/nginx -c /var/nginx/conf/nginx.conf', close_fds=True, shell=True)


回答:

你不应该先 kill 掉之前的进程,然后再重启么……


回答:

python应该直接调用supervisor
由supervisor去控制nginx reload和start

以上是 python subprocess 启动nginx,重启python时提示端口占用 的全部内容, 来源链接: utcz.com/p/938267.html

回到顶部