AWS Lambda(node12.x)与KnexJs只在第一次运行时调用,并在随后的运行中失败。
创始人
2024-11-17 07:30:05
0

问题描述: 在使用AWS Lambda(node12.x)和KnexJs时,发现在第一次运行时可以成功调用,但在随后的运行中却失败了。

解决方法: 这个问题可能是由于KnexJs的连接池在Lambda函数重用上的行为导致的。当AWS Lambda函数完成第一次调用并准备重用时,KnexJs的连接池可能处于不可用状态,导致后续调用失败。

要解决这个问题,可以尝试以下方法:

  1. 在每次Lambda函数调用结束后,手动释放KnexJs的连接池。可以在Lambda函数的处理程序中添加一个闭包函数来处理这个操作。示例代码如下:
const knex = require('knex');

exports.handler = async (event, context) => {
  // 创建Knex实例
  const db = knex({
    client: 'mysql',
    connection: {
      host: 'localhost',
      user: 'username',
      password: 'password',
      database: 'database',
    },
  });

  try {
    // 执行查询操作
    const result = await db.select().from('table');

    // 处理查询结果
    // ...

    // 手动释放Knex连接池
    await db.destroy();

    return result;
  } catch (error) {
    // 处理错误
    // ...

    // 手动释放Knex连接池
    await db.destroy();

    throw error;
  }
};
  1. 可以尝试在每次Lambda函数调用之前,使用db.migrate.latest()方法来确保数据库迁移已经完成。示例代码如下:
const knex = require('knex');
const { migrate } = require('db-migrate');

exports.handler = async (event, context) => {
  // 创建Knex实例
  const db = knex({
    client: 'mysql',
    connection: {
      host: 'localhost',
      user: 'username',
      password: 'password',
      database: 'database',
    },
  });

  try {
    // 执行数据库迁移
    await migrate({ 
      onChange: () => {}, // 迁移完成后的回调函数
      db: db,
    });

    // 执行查询操作
    const result = await db.select().from('table');

    // 处理查询结果
    // ...

    // 手动释放Knex连接池
    await db.destroy();

    return result;
  } catch (error) {
    // 处理错误
    // ...

    // 手动释放Knex连接池
    await db.destroy();

    throw error;
  }
};

通过以上方法,可以确保KnexJs在每次Lambda函数调用之前都处于可用状态,并在每次调用结束后手动释放连接池,以避免后续调用失败的问题。

相关内容

热门资讯

透视揭露!wpk辅助软件,wp... 透视揭露!wpk辅助软件,wpk透视是真的假的-总是是真的有辅助软件(哔哩哔哩)1、每一步都需要思考...
透视教你!wepoker私人局... 透视教你!wepoker私人局怎么玩,wepoker透视版下载-总是存在有辅助技巧(哔哩哔哩)1、完...
透视解谜!哈糖大菠萝辅助器,p... 透视解谜!哈糖大菠萝辅助器,pokemmo辅助器-切实有辅助工具(哔哩哔哩)1.哈糖大菠萝辅助器 选...
透视解迷!aapoker怎么选... 透视解迷!aapoker怎么选牌,aapoker公共底牌-果然是有辅助教程(哔哩哔哩)1、免费脚本咨...
透视普及!we-poker正规... 透视普及!we-poker正规吗,wepoker-h5下载-好像一直总是有辅助技巧(哔哩哔哩)1、首...
透视了解!wepokerplu... 透视了解!wepokerplus外挂,we-poker正规吗-本来真的有辅助神器(哔哩哔哩)1、操作...
透视分享!wepoker脚本下... 透视分享!wepoker脚本下载,wepoker私局代打-果然存在有辅助神器(哔哩哔哩)1、金币登录...
透视推荐!we poker游戏... 透视推荐!we poker游戏下,wepoker作弊辅助-切实有辅助app(哔哩哔哩)1、进入游戏-...
透视曝光!wpk透视辅助方法,... 透视曝光!wpk透视辅助方法,wpk俱乐部是真的吗-其实存在有辅助攻略(哔哩哔哩)1、每一步都需要思...
透视教你!wepoker轻量版... 透视教你!wepoker轻量版透视方法,wepoker私人局透视-果然一直总是有辅助工具(哔哩哔哩)...