1

问题 :

新的 DAG 或对现有 DAG 的更改不会显示在 Airflow Web 服务器上以在应用程序中使用。

例如。假设我在 DAG 目录中添加了一个新的 DAG:

有什么作用:

  • 如果我跑步,$ airflow dags list那么 dag 确实会出现。
  • 同样,如果我使用select dag_id from dag;然后查看数据库,则存在新的 dag。因此,它正在被拾取并放入数据库中。

什么不起作用:

  • 对 DAG 的更改未显示在 Web 应用程序中
  • 如果我在表中查看数据库中的 DAG 源代码dag_code,则源代码没有被更新
  • 如果我重新启动或停止/启动网络服务器和/或调度程序,则 DAG 仍然不会出现在网络服务器中或在dag_code表中更改。

最后什么有效:

  • 如果我$ airflow db init再次运行,那么更改会被拾取并且一切正常......

所以我的系统稳定且可用,因为我正在破解以下功能:$ airflow db init. 由于运行此命令不会影响数据库中的数据,因此我实际上可以像这样工作,并且每次发生更改时都运行该命令。但我很担心,因为这并没有按预期工作,它可能掩盖了更深层次的问题。

任何帮助将不胜感激。我在下面列出了我的系统规格和气流设置。

系统规格和气流设置:

系统规格

  • 操作系统:CentOS Linux 7(核心)
  • Python 虚拟环境:Python 3.6.7、Airflow 2.1.3、pip 21.3.1
  • systemctl --版本:systemd 219
  • psql (PostgreSQL) 9.2.23

气流设置:

airflow.cfg相关参数:

dags_folder = /home/svc-air-analytics/airflow/dags
base_log_folder = /home/svc-air-analytics/airflow/logs

...

# The executor class that airflow should use. Choices include
# SequentialExecutor, LocalExecutor, CeleryExecutor, DaskExecutor, KubernetesExecutor
executor = LocalExecutor

# The SqlAlchemy connection string to the metadata database.
# SqlAlchemy supports many different database engine, more information
# their website
sql_alchemy_conn = postgresql+psycopg2://svc-air-analytics:***@localhost:5432/svc_air_analytics

...

# after how much time (seconds) a new DAGs should be picked up from the filesystem
min_file_process_interval = 0

# How often (in seconds) to scan the DAGs directory for new files. Default to 5 minutes.
dag_dir_list_interval = 10

...

核心地点:

我正在使用 user: 的 AWS EC2 实例上运行svc-air-analytics。关键位置:

  • airflow.cfg地点:/home/svc-air-analytics/airflow/airflow.cfg
  • dags地点 :/home/svc-air-analytics/airflow/dags/
  • Python虚拟环境位置:/home/env_svc_air_analytics

Systemctl 设置(运行网络服务器和调度程序):

  • 环境文件/etc/sysconfig/airflow::
AIRFLOW_CONFIG=/home/svc-air-analytics/airflow/airflow.cfg
AIRFLOW_HOME=/home/svc-air-analytics/airflow
export PATH=$PATH:/home/svc-air-analytics/env_svc_air_analytics/bin/

  • 调度器/usr/lib/systemd/system/airflow-scheduler.service::
[Unit]
Description=Airflow scheduler daemon
After=network.target postgresql.service
Wants=postgresql.service

[Service]
EnvironmentFile=/etc/sysconfig/airflow
User=svc-air-analytics
Group=airflow
Type=simple
ExecStart=/home/svc-air-analytics/env_svc_air_analytics/bin/airflow scheduler
Restart=always
RestartSec=5s

[Install]
WantedBy=multi-user.target
  • 网络服务器:
[Unit]
Description=Airflow webserver daemon
After=network.target postgresql.service
Wants=postgresql.service

[Service]
Environment="PATH=/home/svc-air-analytics/env_svc_air_analytics/bin:/home/svc-air-analytics/airflow/"
User=svc-air-analytics
Group=airflow
Type=simple
ExecStart=/home/svc-air-analytics/env_svc_air_analytics/bin/python /home/svc-air-analytics/env_svc_air_analytics/bin/airflow webserver --pid /run/airflow/webserver.pid
Restart=on-failure
RestartSec=5s
PrivateTmp=true

[Install]
WantedBy=multi-user.target
4

0 回答 0