問題タブ [airflow-scheduler]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
airflow - 気流「one_success」タスクがトリガーされない
LocalExecutor を使用して 4 CPU マシンで Airflow を実行しています
アップストリーム タスクを 1 つの成功として定義しました
...
しかし、いくつかは明確に成功としてマークされていても、タスクはトリガーされません
「ダウンロードタスク」は並行して実行されるため、問題になることはありません
タスクを検査すると、次のことが示されます。
依存性: 不明
理由: すべての依存関係が満たされていますが、タスク インスタンスが実行されていません。ほとんどの場合、これは次の場合を除き、タスクがおそらくすぐにスケジュールされることを意味します: - スケジューラがダウンしているか、負荷が高い - このタスク インスタンスは既に実行されており、状態が手動で変更されている (例: UI でクリアされている)
私は負荷を見てきましたが、実際にはかなり高いです:
負荷平均: 2.45、3.55、3.71 CPU は 50 ~ 60% です
しかし、他のタスクはすでに終了しているので、別のタスクを開始するための空きリソースがあるはずですよね?
python - Airflow DAG のトリガー
私たちは最近、Airflow を「データ ワークフロー」エンジンとして採用しようとしました。ほとんどのことは理解できましたが、DAG をトリガーするタイミングをスケジューラがどのように計算するかについては、まだ灰色の領域にいます。
この単純なダグを見てください:
スケジュールはこれを取得しますが、実行しません。ここで、「start_date」を次のように変更すると:
xxxx、yyyy、zzzz は今日の日付で、実行が開始されます。この原因は、スケジューラがソース DAG フォルダーからこの DAG を再読み取りし続け、毎回 datetime.now() を実行し、開始日が現在キューに入れられている日付と異なることに気付き、この DAG を再追加して再スケジュール/実行日を前倒ししますか (私のdag_dir_list_intervalは 300 です)?
また、気流では、私が理解しているように、dag の一時停止が解除される (または dags_are_paused_at_creation = False で追加される) と、スケジューラーは次のように実行をスケジュールします。
- 1 日目の実行: 直後 (開始日 + 間隔)
- 2 日目の実行: (開始日 + (間隔 * 2)) の直後
- 3 日目の実行: (開始日 + (間隔 * 3)) の直後
これは正しい仮定ですか?
更新 (2017 年 7 月 30 日)
上記の仮定に基づいて、今日 (07/30/2017) にこの DAG を作成しました。
(UTC)に開始する必要があります:
- 2017/7/30 20:20:00
- 2017/7/30 20:30:00
- 2017/7/30 20:40:00
残念ながら、これは起こっていません。これが私のダッシュボードのスクリーンショットです。
20:21:00 に DAG が実行されなかった理由を誰か説明できますか? 20:31:00 以降、まだ実行されませんでした...ここで何が欠けていますか?
ちなみに、何らかの理由で、ダッシュボードから手動で DAG を開始するたびに、DAG が「実行中」の段階にあることに気付きました。どうしてこれなの?手動で開始することは、開始タイミング オプション (start_date/interval/etc) と関係がありますか??
あなたが提供できる説明をありがとう
airflow - ダウンストリームに何が起こっても Airflow タスクは実行されます
私は1日で3つのタスクを持っています。
タスク A を最初に実行します。タスク A が成功すると、タスク B が実行されます。
タスク B の後に実行されたタスク C がありますが、タスク B またはタスク A の成功または失敗に依存しません。
タスク C は、タスク A と B に何が起こっても実行する必要があります。ただし、タスク A と B が完了した後に実行する必要があります。
何か案が ?