AWS MWAA (Amazon Managed Workflows for Apache Airflow) にて、`airflow.exceptions.AirflowTaskTimeout: DagBag import timeout`のエラー
はじめに
AWS MWAA (Amazon Managed Workflows for Apache Airflow) にてワークフロー実行中に表題のエラーに遭遇したため、その解決法について簡潔にまとめます。
何が起きたか?
ワークフローを実行するとエラーが起き、タスクのエラーログには以下のように出ていました。
Executor reports task instance <TaskInstance: hoge_dag.hoge_task manual__yyyy-mm-ddTHH:MM:SS+00:00 [queued]> finished (failed) although the task says its queued. (Info: None) Was the task killed externally?
どうやらタスクはキューされているのに、実行できていないようです。これだけではエラーの原因がわからずですが、サーバーログの方に原因がきちんと出ていました。
以下ログ
airflow.exceptions.AirflowTaskTimeout: DagBag import timeout for hoge_dag.py after 30.0s.
Please take a look at these docs to improve your DAG import time:
* https://***.apache.org/docs/apache-***/2.2.2/best-practices.html#top-level-python-code
* https://***.apache.org/docs/apache-***/2.2.2/best-practices.html#reducing-dag-complexity, PID: 909
ERROR - Failed to execute task Dag 'hoge_dag' could not be found; either it does not exist or it failed to parse..
DAGをimportしようとしたが、タイムアウトになってしまっているようですね。
原因
直接的な原因は上で記載した通りタイムアウトです。
以下のAirflowのBest Practices
が載っているページのReducing DAG complexity
の項を見ると、タスクの数や分岐など、DAGの構造が複雑になるほどパフォーマンスに影響があることが分かります。
今回の僕のケースでは、分岐を多く含むDAGとして構築していたため、DAGをimportする時間が伸びてしまったと考えられました。
どう解決したか?
原因のところで述べたように、DAGの複雑性を低くするかタイムアウト時間を伸ばすことでエラーは解決します。
今回はタイムアウト時間を伸ばす方法をとります。
エラーログにも出ているように、デフォルトのタイムアウト設定値は30秒
なので、これを伸ばしてやります。
タイムアウトの設定はcore.dagbag_import_timeout
の変数で設定されています。
https://airflow.apache.org/docs/apache-airflow/stable/configurations-ref.html#dagbag-import-timeout
MWAAの場合は、airflow.cfg
が公開されておらず直接編集できないので、MWAAのリソースを作成する際に環境変数としてセットしてやる必要があります。
僕はCloud Formationにて作成していたため、template.yamlに以下のように追記しました。
MwaaEnvironment:
Type: AWS::MWAA::Environment
Properties:
・
・
AirflowConfigurationOptions:
# dagの読み込みタイムアウト
core.dagbag_import_timeout: 60
Author And Source
この問題について(AWS MWAA (Amazon Managed Workflows for Apache Airflow) にて、`airflow.exceptions.AirflowTaskTimeout: DagBag import timeout`のエラー), 我々は、より多くの情報をここで見つけました https://qiita.com/Hisaaki-Kato/items/6ee45e0d3a39d524a93e著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .