我正在使用Airflow来整理我的数据管道。在一项任务中,我试图从S3加载一个腌制的对象(rs.Fields("AMafter").Value = (Check2.Value = vbChecked)
实例):
RouteModel
这给了我这个错误:
def read_file_from_s3(bucket, file):
from inference.route_model import RouteModel
s3_loader = S3Client(bucket, None)
buffer = s3_loader.get_file(file)
data = pickle.loads(buffer.read())
使用自定义类时,要腌制的类必须出现在读取腌制过程的名称空间中,在本例中为Airflow。
注意:
我不能改变我腌制文件的方式
请帮助:)
答案 0 :(得分:0)
要解决该问题,我需要编写自己的自定义解酸器,在其中我显式返回泡菜文件也要引用的特定实例的自定义类:
class CustomUnpickler(pickle.Unpickler):
def find_class(self, module, name):
if name == 'RouteModel':
from inference.route_model import RouteModel
return RouteModel
return super().find_class(module, name)
data = CustomUnpickler(io.BytesIO(buffer.read())).load()