这个问题通常出现在使用Python多进程库时。解决方法是将相应的函数或类“全局导入”,而不是“本地导入”。例如,在使用工厂函数时,可以这样做:
from my_module import MyProcessor
def processor_factory():
return MyProcessor()
dag = DAG('my_dag', schedule_interval='@once')
t1 = PythonOperator(
task_id='my_task',
python_callable=processor_factory,
dag=dag
)
在这里,我们不再使用“本地导入”函数“processor_factory”,而是将导入一个全局的类“MyProcessor”。这将解决pickle对象的问题。