气流数据库迁移给出 TypeError: SqlAlchemySessionInterface.__init__() 缺少 6 个必需的位置

Lor*_*ura 11 sqlalchemy flask airflow

我的 CICD 管道中有一个步骤,用于安装气流来测试 dags 加载。从今天早上开始,效果很好。步骤如下:

    - apt update -y
    - pip install --upgrade pip
    - pip install apache-airflow==2.7.3
    - export PATH=/root/.local/bin/:$PATH
    - airflow db migrate 
    - export AIRFLOW_HOME=/root/airflow
    - airflow variables import environments/local.json
    - python3 -m pytest -s dags/
Run Code Online (Sandbox Code Playgroud)

从今天早上开始,我在数据库初始化期间收到以下错误

文件“/usr/local/lib/python3.11/site-packages/airflow/utils/db.py”,第 700 行,在 _get_flask_db AirflowDatabaseSessionInterface(app=flask_app, db=db, table="session", key_prefix=" ") 类型错误:SqlAlchemySessionInterface。init () 缺少 6 个必需的位置参数:'sequence'、'schema'、'bind_key'、'use_signer'、'permanent' 和 'sid_length'

这里是完整的回溯:

  File "/usr/local/bin/airflow", line 8, in <module>
    sys.exit(main())
             ^^^^^^
  File "/usr/local/lib/python3.11/site-packages/airflow/__main__.py", line 57, in main
    args.func(args)
  File "/usr/local/lib/python3.11/site-packages/airflow/cli/cli_config.py", line 49, in command
    return func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/airflow/cli/commands/standalone_command.py", line 53, in entrypoint
    StandaloneCommand().run()
  File "/usr/local/lib/python3.11/site-packages/airflow/utils/providers_configuration_loader.py", line 55, in wrapped_function
    return func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/airflow/cli/commands/standalone_command.py", line 69, in run
    self.initialize_database()
  File "/usr/local/lib/python3.11/site-packages/airflow/cli/commands/standalone_command.py", line 179, in initialize_database
    db.initdb()
  File "/usr/local/lib/python3.11/site-packages/airflow/utils/session.py", line 79, in wrapper
    return func(*args, session=session, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/airflow/utils/db.py", line 733, in initdb
    _create_db_from_orm(session=session)
  File "/usr/local/lib/python3.11/site-packages/airflow/utils/db.py", line 718, in _create_db_from_orm
    _create_flask_session_tbl(engine.url)
  File "/usr/local/lib/python3.11/site-packages/airflow/utils/db.py", line 711, in _create_flask_session_tbl
    db = _get_flask_db(sql_database_uri)
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/airflow/utils/db.py", line 700, in _get_flask_db
    AirflowDatabaseSessionInterface(app=flask_app, db=db, table="session", key_prefix="")
TypeError: SqlAlchemySessionInterface.__init__() missing 6 required positional arguments: 'sequence', 'schema', 'bind_key', 'use_signer', 'permanent', and 'sid_length'
Run Code Online (Sandbox Code Playgroud)

在本地我尝试了一些不同版本的sqlalchemy和flask没有任何进展

小智 14

问题是关于 package 的版本Flask-Session。暂时限制气流Flask-Session==0.6.0

解决方案:

pip install Flask-Session==0.5.0 
Run Code Online (Sandbox Code Playgroud)

或者如果你愿意,你可以使用任何较低的版本,但我建议 0.5.0

如果您想调查更多信息,有针对您问题的 github 票证: https: //github.com/apache/airflow/issues/36883


And*_*hin 3

您需要通过为特定 Airflow 和 Python 版本提供约束来安装 Airflow

\n
pip install "apache-airflow==2.7.3\xe2\x80\x9d --constraint "https://raw.githubusercontent.com/apache/airflow/constraints-2.7.3/constraints-3.11.txt"\n
Run Code Online (Sandbox Code Playgroud)\n

为了避免上游包更新并破坏 Airflow 的某些关键部分时出现意外,请遵循从 PyPI 安装以获取更多详细信息,您也可以检查邮件[提醒] 如何重复安装 Airflow从用户邮件列表中重新安装 Airflow。

\n