通过子进程启动的 Airflow Web 服务器不会死于 kill
Airflow webserver launched via subprocess not dying on kill
使用Python 3.6.1。我正在使用 subprocess.Popen
.
模拟从命令启动 airflow webserver
作为进程
在做了一些事情之后,我稍后会杀死(或终止)它。
webserver_process = subprocess.Popen(["airflow", "webserver"])
webserver_process.kill()
我的理解是,这将向网络服务器发送 SIGKILL
,其基础 gunicorn
应立即关闭。
但是,当我导航到 http://localhost:8080 时,我看到网络服务器仍在 运行ning。同样,当我然后 运行 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
手动终止进程时,它才最终死亡。
这是怎么回事?
airflow webserver
命令返回的python进程实际调用subprocess.Popen
启动子进程gunicorn
。
您可以通过调用 webserver_process.pid 来测试它,您会注意到它与 gunicorn 主进程 pid 不同。
使用Python 3.6.1。我正在使用 subprocess.Popen
.
airflow webserver
作为进程
在做了一些事情之后,我稍后会杀死(或终止)它。
webserver_process = subprocess.Popen(["airflow", "webserver"])
webserver_process.kill()
我的理解是,这将向网络服务器发送 SIGKILL
,其基础 gunicorn
应立即关闭。
但是,当我导航到 http://localhost:8080 时,我看到网络服务器仍在 运行ning。同样,当我然后 运行 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
手动终止进程时,它才最终死亡。
这是怎么回事?
airflow webserver
命令返回的python进程实际调用subprocess.Popen
启动子进程gunicorn
。
您可以通过调用 webserver_process.pid 来测试它,您会注意到它与 gunicorn 主进程 pid 不同。