Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python AWS Lambda-使用pickle创建超时_Python_Amazon Web Services_Lambda_Aws Lambda - Fatal编程技术网

Python AWS Lambda-使用pickle创建超时

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')

我有一个python 2.7 lambda函数,我已经通过zip文件上传到AWS。它挂起使用cpickle加载文件的调用(该文件位于zip文件中上载的本地目录中)

这在我的机器上运行得很好,我甚至试着打印出几行酸洗过的文件,以确保它能够找到文件,它们看起来很好

这是密码,有什么想法吗

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结束时不关闭连接也会导致超时。