Ubuntu 无可见原因退出Airflow Worker守护程序

Ubuntu 无可见原因退出Airflow Worker守护程序,ubuntu,systemd,airflow,worker,Ubuntu,Systemd,Airflow,Worker,我在虚拟环境中运行了Airflow 1.9,使用芹菜和Redis进行了设置,效果很好。但是,我想对设置进行后台程序化,并使用了说明。对于Web服务器、调度器和Flower来说,它工作得很好,但是对于Worker来说却失败了,Worker当然是它的核心。我的airflow worker.service文件如下所示: [Unit] Description=Airflow celery worker daemon After=network.target postgresql.service mysq

我在虚拟环境中运行了Airflow 1.9,使用芹菜和Redis进行了设置,效果很好。但是,我想对设置进行后台程序化,并使用了说明。对于Web服务器、调度器和Flower来说,它工作得很好,但是对于Worker来说却失败了,Worker当然是它的核心。我的
airflow worker.service
文件如下所示:

[Unit]
Description=Airflow celery worker daemon
After=network.target postgresql.service mysql.service redis.service rabbitmq-server.service
Wants=postgresql.service mysql.service redis.service rabbitmq-server.service

[Service]
EnvironmentFile=/etc/default/airflow
User=root
Group=root
Type=simple
ExecStart=/bin/bash -c 'source /home/codingincircles/airflow-master/bin/activate ; airflow worker'
Restart=on-failure
RestartSec=10s

[Install]
WantedBy=multi-user.target
奇怪的是,如果我在CLI上按原样运行
ExecStart
命令,它运行得很好,任务运行得很好,一切都很顺利。但是,当我执行
sudo service worker start
时,需要一段时间才能返回到提示符,并且Flower UI中没有显示任何内容。当我执行
journalctl-u afflow-worker.service-e
时,我看到的是:

systemd[1]: Started Airflow celery worker daemon.
bash[12392]: [2018-04-09 21:52:41,202] {driver.py:120} INFO - Generating grammar tables from /usr/lib/python3.5/lib2to3/Grammar.txt
bash[12392]: [2018-04-09 21:52:41,252] {driver.py:120} INFO - Generating grammar tables from /usr/lib/python3.5/lib2to3/PatternGrammar.txt
bash[12392]: [2018-04-09 21:52:41,578] {configuration.py:206} WARNING - section/key [celery/celery_ssl_active] not found in config
bash[12392]: [2018-04-09 21:52:41,578] {default_celery.py:41} WARNING - Celery Executor will run without SSL
bash[12392]: [2018-04-09 21:52:41,579] {__init__.py:45} INFO - Using executor CeleryExecutor
systemd[1]: airflow-worker.service: Main process exited, code=exited, status=1/FAILURE
systemd[1]: airflow-worker.service: Unit entered failed state.
systemd[1]: airflow-worker.service: Failed with result 'exit-code'.

我做错了什么?任何其他使用气流的方法都有效,除非我尝试将其放大。即使在
气流
命令生效后使用
-D
标志(如
气流工作者-D
),但我不确定这是否是在生产中使用它的正确/安全/推荐方式,我宁愿将其作为服务并使用它。请提供帮助。

您的
airflow worker。服务
正在尝试以
root
用户身份运行airflow worker。要以root用户身份运行airflow worker,必须在airflow环境文件(
/etc/default/airflow
)中设置
C\u FORCE\u root=“true”
)。然而,这是不推荐的,我怀疑这不是最好的修复你

当尝试以root用户身份手动运行airflow worker时,您应该会看到一条警告。因为您没有看到此警告,我怀疑您能够手动启动worker而不出现问题,因为您是以正确配置的
用户而不是
root用户运行它的。因此,建议的解决方案是更改
airflow worker.service
文件中的以下行:

User=airflow
Group=airflow

我懂了。奇怪的是,我又试了一次,只是重新启动了所有的气流服务,现在一切正常。尽管
sudo服务人员状态显示为一个白点,但这一点虽然非常神秘,但至少出于某种原因现在似乎起了作用。知道为什么吗?然而,就最佳实践而言,您是否建议我创建一个airflow用户和组,并以这种方式使用服务?是的,我的理解是,从专用用户和组运行airflow是最佳实践,但通过快速搜索,我无法找到支持这一点的文档。不过,我认为可以肯定地说,只要有可能,就应该避免以root用户身份运行应用程序。明白了吗。非常感谢:)好的,是的,添加
C\u FORCE\u ROOT=“true”
确实解决了这个问题,一切都很好!所以谢谢你。但是我将进行更改,添加
气流
用户和组,并使用它运行它。非常感谢。回答得很好。始终以专用“airflow”(或其他)用户的身份运行工作人员,而不是root用户。