我有一些似乎无法找到 python 模块的 dag。在 Airflow UI 内部,我看到了大量这样的消息变体。Broken DAG: [/home/airflow/source/airflow/dags/test.py] No module named 'paramiko'
在文件内部,我可以直接修改 python sys.path,这似乎可以缓解我的问题。import sys
sys.path.append('/home/airflow/.local/lib/python2.7/site-packages')
尽管必须直接在我的代码中设置我的路径,但这感觉不对。我尝试在 Airflow 用户帐户 .bashrc 中导出 PYTHONPATH,但在执行 dag 作业时似乎没有被读取。这样做的正确方法是什么?
谢谢。
- - - 更新 - - -
感谢您的回复。
下面是我的 systemctl 脚本。
::::::::::::::
airflow-scheduler-airflow2.service
::::::::::::::
[Unit]
Description=Airflow scheduler daemon
[Service]
EnvironmentFile=/usr/local/airflow/instances/airflow2/etc/envars
User=airflow2
Group=airflow2
Type=simple
ExecStart=/usr/local/airflow/instances/airflow2/venv/bin/airflow scheduler
Restart=always
RestartSec=5s
[Install]
WantedBy=multi-user.target
::::::::::::::
airflow-webserver-airflow2.service
::::::::::::::
[Unit]
Description=Airflow webserver daemon
[Service]
EnvironmentFile=/usr/local/airflow/instances/airflow2/etc/envars
User=airflow2
Group=airflow2
Type=simple
ExecStart=/usr/local/airflow/instances/airflow2/venv/bin/airflow webserver
Restart=always
RestartSec=5s
[Install]
WantedBy=multi-user.target
这是上面使用的 EnvironentFile Contents
more /usr/local/airflow/instances/airflow2/etc/envars
PATH=/usr/local/airflow/instances/airflow2/venv/bin:/usr/local/bin:/usr/bin:/bin
AIRFLOW_HOME=/usr/local/airflow/instances/airflow2/home
AIRFLOW_CONFIG=/usr/local/airflow/instances/airflow2/etc/airflow.cfg
最佳答案
我有类似的问题:
dags
文件夹 我在 systemd 服务的环境文件中添加了以下字符串
(
/usr/local/airflow/instances/airflow2/etc/envars
在你的情况下)source /home/ubuntu/venv/airflow/bin/activate
PYTHONPATH=/home/ubuntu/venv/airflow/dags:$PYTHONPATH
关于 Airflow dags 和 PYTHONPATH,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50711645/