【问题标题】:How to disable autostart all tasks on airflow restart?如何在气流重启时禁用自动启动所有任务?
【发布时间】:2018-10-12 12:32:18
【问题描述】:

我们有问题。当我们重新启动气流时 - 我们所有的任务都在这个时候开始,我们的服务器负载很重。我们如何防止在气流重启时启动所有任务?

任务示例:

    default_args = {
     'owner': 'airflow',
     'depends_on_past': False,
     'start_date': datetime(2018, 5, 2),
     'email': ['test@test.com'],
     'email_on_failure': True,
     'email_on_retry': True,
     'retries': 1,
     'retry_delay': timedelta(minutes=5),
     'catchup': False

 }

 dag = DAG(
     'start_data_collect', default_args=default_args, schedule_interval=timedelta(minutes=10))

 t1 = BashOperator(
     task_id='print_date',
     bash_command='date',
     dag=dag)

【问题讨论】:

  • 您是否为max_threads 更改了airflow.cfg 中的任何内容?还是你用芹菜之类的?
  • 我们使用默认设置的 Celery。
  • 那么您可能想更改设置celeryd_concurrency

标签: celery airflow


【解决方案1】:

如果您在 UI 中将状态切换为“关闭”,它应该会停止您的 DAG。如果您希望默认禁用新的 DAG,您可以在气流配置中的 [core] 下更新 set dags_are_paused_at_creation = True。

【讨论】:

    【解决方案2】:

    如果您的服务器负载过重,那是因为您的工作人员可以轻松地连接和查询/使用它们。我建议下次在重新启动 Airflow 之前,查看所有使用与可能过载的服务器的连接的 dag,并将它们的任务配置为每个使用一个池,可能每个服务器或连接一个池。您还需要在带有插槽的 UI 中创建池。但是 v1.9 和更高版本有一个补丁可以自动创建具有 0 个插槽的池,因此您可以使用 UI 进入并为每个池添加一些插槽。这样,即使调度程序可以调度许多可用的任务,它也不会调度更多的任务数量可以容纳在插槽中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-12-28
      • 1970-01-01
      • 1970-01-01
      • 2023-01-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-15
      相关资源
      最近更新 更多