AWS Lambda Boto gensim model module initialization error: __exit__

AWS Lambda Boto gensim model module initialization error: __exit__

在 AWS lambda 上使用 gensim 托管一个 word2vec 模型

使用python 2.7 boto==2.48.0 gensim==3.4.0

我的 function.py 文件中有几行直接从 s3

加载模型
print('################### connecting to s3...')
s3_conn = boto.s3.connect_to_region(
        region,
        aws_access_key_id = Aws_access_key_id,
        aws_secret_access_key = Aws_secret_access_key,
        is_secure = True,
        calling_format = OrdinaryCallingFormat()
        )
print('################### connected to s3...')
bucket = s3_conn.get_bucket(S3_BUCKET)
print('################### got bucket...')
key = bucket.get_key(S3_KEY)
print('################### got key...')
model =  KeyedVectors.load_word2vec_format(key, binary=True)
print('################### loaded model...')

在模型加载线上

    model =  KeyedVectors.load_word2vec_format(key, binary=True)

收到一个没有太多细节的神秘错误:

在云手表上可以看到我所有的打印消息直到'################### got key...'包括在内, 然后我得到:

START RequestId: {req_id} Version: $LATEST 

紧接着[这两条消息之间没有时间延迟]

module initialization error: __exit__ 

请问,有没有办法获得详细的错误或更多信息?

更多背景详情: 我能够将模型从 s3 下载到 /tmp/,它确实授权并检索了模型文件,但是它超出了 space [文件是 ~2GB,/tmp/ 是 512MB]

所以,切换到直接通过 gensim 加载模型,现在出现那个神秘的错误。

运行 使用 python-lambda-local 的函数可以正常工作

所以,这可能会缩小到 gensim 的智能打开或 aws lambda 的问题,希望得到任何提示,谢谢!

而不是使用 boto 连接, 简单地:

model = KeyedVectors.load_word2vec_format('s3://{}:{}@{}/{}'.format(AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, S3_BUCKET, S3_KEY), binary=True)

成功了!

但当然,不幸的是,它没有回答为什么会出现神秘的 exit 错误以及如何获取更多信息的问题:/