[英]AWS Lambda Mongodb Error: topology was destroyed
我已经创建了一个Lambda函数,用于通过Node JS中的该函数将数据存储到Mongodb:
const Connection = MongoClient.connect(...);
const demoColl = Connection.collection('demo');
demoColl.bulkWrite(bulkArray...);
client.close();
我已经通过平稳地invoke local
函数进行了测试,一次运行一次也成功。
但是我的应用程序每秒调用该函数3-5次,lambda显示此错误消息
“ errorMessage”:“拓扑被破坏”,“ errorType”:“ MongoError”
我已经完成了一项研究,当该函数仍在运行时,它会导致关闭数据库。 如何防止其中一个连接关闭不会影响另一个Lambda函数?
import * as mongoose from "mongoose";
(<any>mongoose).Promise = global.Promise;
let cacheDb: mongoose.Connection = null;
export let connect = () => {
if (cacheDb && mongoose.connection.readyState === 1) {
return cacheDb;
} else {
// Mongoose config and setting global Promise
mongoose.connect(process.env.MONGODB_URI, {
promiseLibrary: global.Promise,
connectTimeoutMS: 20 * 1000
}).then(() => {
cacheDb = mongoose.connection;
return cacheDb;
}).catch((err) => {
console.log(err);
});
}
};
export let disconnect = () => {
mongoose.disconnect();
}
我有这个文件,用于缓存MongoDB连接并在可用时重复使用。 只要确保它不在lambda处理程序之外即可。
而且,关闭连接不是一个好主意,因为这会使您的lambda在每次调用lambda时都进行连接-这增加了数据库和Lambda执行时间的负担。
参考: https : //blog.cloudboost.io/i-wish-i-knew-how-to-use-mongodb-connection-in-aws-lambda-f91cd2694ae5
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.