我们可以参数化气流 schedule_interval 动态地从变量中读取而不是作为 cron 表达式传递

can we parameterize the airflow schedule_interval dynamically reading from the variables instead of passing as the cron expression

我们能否参数化气流 schedule_interval 动态读取气流变量而不是直接作为 cron 表达式传递

我按照气流文档通过了以下方式 参数 = { 'owner': 'pavan', 'depends_on_past':错误, 'start_date': 日期时间(2020, 1, 15), 'email_on_failure':对, 'email_on_retry':错误, 'retries': 0, 'on_failure_callback': notify_email }

with DAG(dag_id=DAG_NAME, default_args=args, schedule_interval='* 1 * * *', catchup=False) 作为 dag:

技术上你可以做到,但它带来了 2 个问题

  • 小问题:读取变量意味着 SQL-query 被触发到 Airflow 的 SQLAlchemy 后端 meta-db。在您的 DAG-definition 脚本中执行此操作意味着这将发生,因为 DAG 会在后台不断地被 Airflow 解析。阅读

  • 主要问题:可以通过 UI 编辑变量。但是改变 Airflow DAG 的 schedule_interval 可能会有奇怪的行为,可能需要您 or (anecdotal finding) restart the scheduler 来修复