使用SQLite运行Airflow Scheduler遇警告且无法启动,如何解决?
解决Airflow Scheduler因SQLite导致的并行限制问题
问题根源
SQLite不支持多进程并发写入操作,当Airflow检测到使用SQLite且配置了parsing_processes = 2时,会自动将parallelism强制设置为1,这会导致调度器无法并行处理任务,甚至出现运行异常。
解决方案
1. 更换为生产级数据库(推荐)
Airflow官方不建议在生产或需要并行处理的环境中使用SQLite,推荐切换到PostgreSQL或MySQL:
- 安装对应数据库的Python驱动:
# PostgreSQL驱动 pip install psycopg2-binary # MySQL驱动 pip install mysqlclient - 修改Airflow配置文件
airflow.cfg中的sql_alchemy_conn,替换为对应数据库的连接字符串:# PostgreSQL示例 sql_alchemy_conn = postgresql+psycopg2://用户名:密码@主机地址:端口/数据库名 # MySQL示例 sql_alchemy_conn = mysql://用户名:密码@主机地址:端口/数据库名?charset=utf8mb4 - 初始化或升级数据库:
# 首次初始化 airflow db init # 已有数据库则执行升级 airflow db upgrade - 重启Airflow Scheduler和Webserver服务。
2. 调整SQLite环境下的Airflow配置(仅适用于测试环境)
如果只是测试场景不想更换数据库,可修改配置关闭多进程解析:
- 打开
airflow.cfg,将parsing_processes设置为1:parsing_processes = 1 - 根据测试需求调整
parallelism参数(例如设置为2-5):parallelism = 3 - 重启Airflow Scheduler。
内容的提问来源于stack exchange,提问作者Bill Lin
相关产品推荐
相关产品推荐

