气流传感器中的“重新安排”模式如何工作?

OCD*_*Dev 10 airflow airflow-scheduler

我有一个 Airflow Http 传感器,它调用 REST 端点并检查 API 返回的 JSON 结构中的特定值

sensor = HttpSensor(
    soft_fail=True,
    task_id='http_sensor_check',
    http_conn_id='http_default',
    endpoint='http://localhost:8082/api/v1/resources/games/all',
    request_params={},
    response_check=lambda response: True if check_api_response(response) is True else False,
    mode='reschedule',
    dag=dag)
Run Code Online (Sandbox Code Playgroud)

如果response_check为假,则DAG将处于“up_for_reschedule”状态。问题是,DAG 永远保持这种状态,并且从未重新安排。

我的问题是:

  • “up_for_reschedule”是什么意思?DAG 何时重新安排?
  • 假设我的 DAG 计划每 5 分钟运行一次,但由于传感器的原因,“up_for_reschedule”DAG 实例与新运行重叠,我是否会同时运行 2 个 DAGS?

先感谢您。

Ela*_*lad 13

在传感器中mode='reschedule'意味着如果传感器的标准不为真,那么传感器会将工作人员释放到其他任务中。这对于传感器可能等待很长时间的情况非常有用。

  1. up_for_reschedule意味着传感器条件尚未成立,并且尚未达到超时,因此任务正在等待调度程序重新调度。
  2. 您不知道任务何时运行。这取决于调度程序(可用资源、优先级等)。如果您不想允许并行 dag 运行,请max_active_runs=1在 DAG 构造函数中使用。