我正在为我的数据管道项目使用气流。我已在气流中配置了我的项目,并使用以下命令
启动气流服务器作为后端进程aiflow webserver -p 8080 -D True
服务器在后端成功运行。现在我想在airflow中启用身份验证并在airflow.cfg中完成配置更改,但身份验证功能不会反映在服务器中。当我在本地机器上停止并启动气流服务器时,它可以工作。
那么如何在我的服务器中重新启动我的守护程序气流Web服务器进程?
答案 0 :(得分:28)
我建议以稳健的方式运行气流,并使用systemd进行自动恢复
所以你可以这样做:
- 开始systemctl start airflow
- 停止systemctl stop airflow
- 重新启动systemctl restart airflow
为此,您需要一个systemd“unit”文件。
作为(工作)示例,您可以使用以下内容:
put it in /lib/systemd/system/airflow.service
[Unit]
Description=Airflow webserver daemon
After=network.target postgresql.service mysql.service redis.service rabbitmq-server.service
Wants=postgresql.service mysql.service redis.service rabbitmq-server.service
[Service]
PIDFile=/run/airflow/webserver.pid
EnvironmentFile=/home/airflow/airflow.env
User=airflow
Group=airflow
Type=simple
ExecStart=/bin/bash -c 'export AIRFLOW_HOME=/home/airflow ; airflow webserver --pid /run/airflow/webserver.pid'
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s TERM $MAINPID
Restart=on-failure
RestartSec=42s
PrivateTmp=true
[Install]
WantedBy=multi-user.target
P.S:将AIRFLOW_HOME更改为配置
的气流文件夹答案 1 :(得分:18)
您可以查看$AIRFLOW_HOME/airflow-webserver.pid
以获取您的网络服务器守护程序的进程ID吗?
然后传递一个杀死信号来杀死它
cat $AIRFLOW_HOME/airflow-webserver.pid | xargs kill -9
然后运行
airflow webserver -p 8080 -D True
重启守护进程
答案 2 :(得分:9)
Airflow使用gunicorn作为HTTP服务器,因此您可以发送标准POSIX风格的信号。后台程序通常用于重新启动的信号是HUP
。
您需要找到气流网络服务器守护程序的pid文件,以便获取正确的进程ID以发送信号。此文件可能位于$AIRFLOW_HOME
或/var/run
,您可以在其中找到大量的pids。
假设pid文件位于/var/run
,您可以运行命令:
cat /var/run/airflow-webserver.pid | xargs kill -HUP
gunicorn使用preforking模型,因此它具有主进程和工作进程。 HUP
信号被发送到主进程,主进程执行以下操作:
HUP:重新加载配置,使用新配置启动新的工作进程并正常关闭旧工作程序。如果没有预加载应用程序(使用preload_app选项),Gunicorn也会加载它的新版本。
gunicorn signal handling docs。
中的更多信息这主要是captaincapsaicin的答案的扩展版本,但是使用HUP
(SIGHUP)代替KILL
(SIGKILL)重新加载进程而不是实际杀死它并重新启动它。
答案 3 :(得分:8)
这对我有用(多次!:D)
找到进程ID :(假设8080是端口)
$ git push -f origin HEAD # replace your remote/master with local/master
杀了它
lsof -i tcp:8080
答案 4 :(得分:3)
就我而言,我想终止之前的气流过程并开始。 对于下面的命令做了魔术
killall -9 airflow
答案 5 :(得分:2)
由于该问题与webserver
有关,因此在我的情况下有效:
systemctl restart airflow-webserver
答案 6 :(得分:1)
通过以下方式查找 pid
:
airflow webserver
将给出:“网络服务器已经在 PID 21250 下运行。”
比杀死 web 服务器进程:
kill 21250
答案 7 :(得分:0)
创建一个init脚本并使用命令“daemon”将其作为服务运行。
daemon --user="${USER}" --pidfile="${PID_FILE}" airflow webserver -p 8090 >> "${LOG_FILE}" 2>&1 &
答案 8 :(得分:0)
只需运行:
airflow webserver -p 8080 -D
答案 9 :(得分:0)
推荐的方法是创建并启用气流Web服务器即服务。如果您将网络服务器命名为“ airflow-webserver”,请运行以下命令以重新启动服务:
systemctl重新启动airflow-webserver
您可以使用AWS Marketplace中的现成AMI(即LightningFLow),该AMI提供在启动时启用的Airflow服务(Web服务器,调度程序,工作程序)。
注意:LightningFlow已与所有必需的库,Livy,自定义运算符和本地Spark集群预先集成。
AWS Marketplace的链接:https://aws.amazon.com/marketplace/pp/Lightning-Analytics-Inc-LightningFlow-Integrated-o/B084BSD66V
答案 10 :(得分:-2)
这些都不适合我。我不得不删除 [976] "how to utilize public or hybrid clouds without"
[977] "compromising the overall security posture and at"
[978] "the same time leveraging cost and scaling benefits"
[979] "of the cloud."
[980] ""
[981] "If we take a holistic view of the non-technical challenges, it boils down to how the mid-to-large sized"
[982] "IT departments are organized. The typical organization is divided into for example a network team,"
[983] "a server team, a security team and an application"
[984] "team working perfectly within their respective silo"
[985] "but rarely frictionless between the silos."
文件,然后运行$AIRFLOW_HOME/airflow-webserver.pid
。