我正在AWS Lambda上测试SQL炼金术。引擎和会话在一个单例中。根据观察到的行为,我的问题是,为什么在AWS Lambda中,SQL炼金术会话即使在Lambda超时后仍然存在
为了测试会话是否仍然存在,我使用了以下步骤:
使用postgres作为db,我启动了一个事务并运行了drop查询,但没有提交也没有回滚它。这是在workbenchJ做的
现在我调用了lambda,并在lambda中对同一个表运行select查询
在postgres中,select和drop不能同时运行,因此现在可以检查select语句是否正在等待drop查询获取的锁
调用
Lambda
函数时,将创建一个Lambda
并发。 您可以将并发看作是一个容器在
Lambda
超时甚至正常完成后,并发将保持一段时间(可能10~30分钟)。这意味着内存区域仍将保留。这是为了快速响应连续调用,因为启动并发需要一段时间因此,如果请求另一个调用,并发性将在同一内存区域中重用
这就是为什么您的
sqlalchemy
会话在下一次调用时仍然处于活动状态但是,如果在一个并发运行时请求另一个调用,则会创建另一个不共享内存区域的并发。此时,您的
sqlalchemy
会话不在那里你可以用这个小例子来验证。 分别以1秒的间隔调用
Lambda
函数10次,并检查输出。两个函数将显示不同的结果此外,您可以检查
CloudWatch
中现在运行的并发数相关问题 更多 >
编程相关推荐