Python AWS Lambda-使用pickle创建超时
我有一个python 2.7 lambda函数,我已经通过zip文件上传到AWS。它挂起使用cpickle加载文件的调用(该文件位于zip文件中上载的本地目录中) 这在我的机器上运行得很好,我甚至试着打印出几行酸洗过的文件,以确保它能够找到文件,它们看起来很好 这是密码,有什么想法吗Python AWS Lambda-使用pickle创建超时,python,amazon-web-services,lambda,aws-lambda,Python,Amazon Web Services,Lambda,Aws Lambda,我有一个python 2.7 lambda函数,我已经通过zip文件上传到AWS。它挂起使用cpickle加载文件的调用(该文件位于zip文件中上载的本地目录中) 这在我的机器上运行得很好,我甚至试着打印出几行酸洗过的文件,以确保它能够找到文件,它们看起来很好 这是密码,有什么想法吗 import cPickle as pickle import os def chooseNextWord(sentence): pkl_file = open('bigrams.pkl', 'rb')
import cPickle as pickle
import os
def chooseNextWord(sentence):
pkl_file = open('bigrams.pkl', 'rb')
bigrams = pickle.load(pkl_file)
return sentence
def lambda_handler(event, context):
return chooseNextWord("hello")
如果我注释掉pickle.load,所有内容都会运行,我可以使用pkl_file.readline()正常地逐行读取文件。我在发布此问题后不久找到的解决方案,请增加lambda函数的可用内存。我加载到内存中的对象太大。超时是一个错误,具有误导性。您的代码中存在一个问题,而不是aws lambda。问题就在这里
pickle.load("filename")
pickle.load将文件名作为参数,而不是文件描述符。
open('bigrams.pkl','rb')返回一个文件描述符。
那么你的情况呢
def chooseNextWord(sentence):
bigrams = pickle.load('bigrams.pkl')
return sentence
这可能对您有用看起来这是内存问题。我为lambda函数增加了分配的内存,一切正常。你给lambda的内存消耗量是多少?我从128增加到256mb。是的,你需要观察lambda的情况,例如使用节点MySQL客户端,在Lamdba结束时不关闭连接也会导致超时。