我是 Airflow 的新手,试图通过启动 Airflow 网络服务器和调度程序来运行 dag。关闭调度程序和 Airflow 网络服务器后, Airflow 进程仍在运行。ps aux | grep airflow
显示 2 个正在运行的 Airflow 网络服务器,以及为所有 dag 运行的调度程序。
我试过运行 kill $(ps aux | grep airflow | awk '{print $2}')
但它没有帮助。
我没有 sudo
权限和网络服务器 UI 访问。
最佳答案
如果您在本地运行 Airflow 并使用两个命令启动它 airflow scheduler
和 airflow webserver
,那么这些进程将在前台运行。因此,只需为每个进程按 Ctrl-C 即可终止它们及其所有子进程。
如果您没有在前台运行这两个进程,还有另一种方法。 Airflow 在其主目录(默认为 ~/airflow/
)中创建带有调度程序和 gunicorn 服务器进程 ID 的文件。
运行
kill $(cat ~/airflow/airflow-scheduler.pid)
应该终止调度程序。不幸的是,
airflow-webserver.pid
包含 gunicorn 服务器的 PID,而不是启动它的初始 Airflow 命令(它是 gunicorn 进程的父进程)。因此,我们首先必须找到 gunicorn 进程的父 PID,然后终止父进程。运行
kill $(ps -o ppid= -p $(cat ~/airflow/airflow-webserver.pid))
应该终止网络服务器。如果只是运行
kill
(即,发送 SIGTERM)对于这些进程不起作用,您可以随时尝试发送 SIGKILL:kill -9 <pid>
.这绝对应该杀死他们。
关于airflow - 如何杀死 Airflow 调度程序和网络服务器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65656254/