错误 - 无法执行任务“ti”(KeyError:Apache Airflow 中的“ti”)

问题描述 投票:0回答:1

我在

Airflow 2.9.0
中(反复)收到以下错误:

2024-05-07T11:10:43.522+0000] {local_executor.py:139} ERROR - Failed to execute task ' ti'.

Traceback (most recent call last):
  File "/home/airflow/.local/lib/python3.11/site-packages/airflow/executors/local_executor.py", line 135, in _execute_work_in_fork
    args.func(args)
  File "/home/airflow/.local/lib/python3.11/site-packages/airflow/cli/cli_config.py", line 49, in command
    return func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^
  File "/home/airflow/.local/lib/python3.11/site-packages/airflow/utils/cli.py", line 114, in wrapper
    return f(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^
  File "/home/airflow/.local/lib/python3.11/site-packages/airflow/cli/commands/task_command.py", line 422, in task_run
    ti.init_run_context(raw=args.raw)
  File "/home/airflow/.local/lib/python3.11/site-packages/airflow/models/taskinstance.py", line 3307, in init_run_context
    self._set_context(self)
  File "/home/airflow/.local/lib/python3.11/site-packages/airflow/utils/log/logging_mixin.py", line 127, in _set_context
    set_context(self.log, context)
  File "/home/airflow/.local/lib/python3.11/site-packages/airflow/utils/log/logging_mixin.py", line 274, in set_context
    flag = cast(FileTaskHandler, handler).set_context(value)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/airflow/.local/lib/python3.11/site-packages/airflow/providers/microsoft/azure/log/wasb_task_handler.py", line 89, in set_context
    super().set_context(ti, identifier=identifier)
  File "/home/airflow/.local/lib/python3.11/site-packages/airflow/utils/log/file_task_handler.py", line 219, in set_context
    local_loc = self._init_file(ti, identifier=identifier)
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/airflow/.local/lib/python3.11/site-packages/airflow/utils/log/file_task_handler.py", line 500, in _init_file
    local_relative_path = self._render_filename(ti, ti.try_number)
                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/airflow/.local/lib/python3.11/site-packages/airflow/utils/log/file_task_handler.py", line 290, in _render_filename
    return str_tpl.format(
           ^^^^^^^^^^^^^^^
KeyError: ' ti'

我之前使用过

Airflow 2.2.0
,一切仍然工作正常,没有任何错误或警告。更新到 2.9.0 并升级数据库(使用
airflow db migrate --to-version="2.9.0"
)后,我开始收到此错误。此错误似乎还会导致调度程序崩溃。不过网络服务器仍然可以访问。

Airflow 正在具有以下基本映像的 Docker 容器内运行:

apache/airflow:2.9.0-python3.11


到目前为止,我已经尝试在默认参数中设置

'provide_context'=True
并设置为特定的 PythonOperators。

还要注意,发生按键错误的按键中有一个空格(

' ti'
),这对我来说似乎很奇怪。

有谁知道如何修复这个错误?


编辑 1:即使 Airflow 没有加载任何 DAG,它仍然会出现相同的错误。这让我相信它与数据库有关。我使用 postgresql 数据库作为元数据。

python docker airflow
1个回答
0
投票

我找到了解决问题的方法。在发现它与我的数据库有关后,我想我重置了它。不建议简单地这样做,但我当时没有重要的变量或联系。我相信我的问题出在

dag
表中,因此您可以尝试先清除该表。保持
dag
表完好无损并不那么重要,但要知道删除 dag 表将删除有关运行以及 DAG 是否暂停的历史记录。


如果您想使用与我相同的解决方案,您可以尝试以下命令:

airflow db reset

请注意,这也会丢弃变量(即秘密等)和连接!所以要小心。

© www.soinside.com 2019 - 2024. All rights reserved.