如何重启气流网络服务器?

时间:2016-08-22 07:19:37

标签: python-2.7 airflow

我正在为我的数据管道项目使用气流。我已在气流中配置了我的项目,并使用以下命令

启动气流服务器作为后端进程
aiflow webserver -p 8080 -D True

服务器在后端成功运行。现在我想在airflow中启用身份验证并在airflow.cfg中完成配置更改,但身份验证功能不会反映在服务器中。当我在本地机器上停止并启动气流服务器时,它可以工作。

那么如何在我的服务器中重新启动我的守护程序气流Web服务器进程?

11 个答案:

答案 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网络服务器(枪支)信号处理

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