【发布时间】:2017-07-12 17:20:46
【问题描述】:
使用 Python 3.6.1。我正在模拟从命令中启动airflow webserver 作为使用subprocess.Popen 的进程。
在做了一些事情之后,我稍后会去杀死(或终止)它。
webserver_process = subprocess.Popen(["airflow", "webserver"])
webserver_process.kill()
我的理解是,这会将SIGKILL 发送到网络服务器,其底层gunicorn 应立即关闭。
但是,当我导航到http://localhost:8080 时,我看到网络服务器仍在运行。同样,当我随后运行 sudo netstat -nlp|grep 8080(我使用的是 UNIX,airflow webserver 在端口 8080 上启动)时,我发现:
tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN
只有当我使用sudo fuser -k 8080/tcp 手动终止进程时,它才会最终死掉。
这是怎么回事?
【问题讨论】:
标签: python linux subprocess popen airflow