You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Airflow scheduler启动报错AttributeError: Can't pickle local object processor_factory

根因定位

这个是Airflow和macOS系统Python多进程默认启动规则的兼容性问题,仅出现在Python 3.8+ + macOS + Airflow < 2.0.2的环境组合中:

  • macOS从Catalina版本开始,Python 3.8及更高版本将多进程默认启动方式从fork调整为spawn,避免内核层面的崩溃风险
  • 2.0.2版本之前的Airflow,scheduler的DAG处理进程生成逻辑使用了局部函数作为进程入参,spawn模式下需要将入参序列化(pickle)传输到子进程,局部函数不支持序列化,直接触发第一个核心报错AttributeError: Can't pickle local object 'SchedulerJob._execute.<locals>.processor_factory'
  • 进程启动失败后没有生成合法的进程组ID,后续的进程回收逻辑传入了空值,触发衍生报错TypeError: an integer is required (got type NoneType)
修复方案
  • 方案一(推荐):升级Airflow到2.0.2或更高版本,官方在该版本已完成spawn模式适配,升级后直接重启scheduler即可解决问题
  • 方案二(适配低版本临时修复):手动指定多进程启动方式为兼容的fork模式,两种操作方式二选一:
    • 临时生效:启动Airflow前在当前终端执行命令:export OBJC_DISABLE_INITIALIZE_FORK_SAFETY=YES
    • 永久生效:在airflow.cfg配置文件的[core]段添加配置:
    multiprocessing_start_method = fork
    
    配置修改后重启scheduler即可生效

内容的提问来源于stack exchange,提问作者Alex Ngn

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 07:30:02