Python 如何关闭失控的可用连接?

Python 如何关闭失控的可用连接?,python,amazon-web-services,aws-lambda,Python,Amazon Web Services,Aws Lambda,我在Python中为AWS构建了一个lambda函数,它使用aiohttp发出一些请求 如AWS所述 Lambda函数代码中的任何声明(处理程序代码之外,请参见编程模型)都保持初始化状态,以便在再次调用函数时提供额外的优化。例如,如果Lambda函数建立数据库连接,而不是重新建立连接,则在后续调用中使用原始连接 因此,我将aiohttp.ClientSession()放在handle函数之外,以便将来的lambda函数可能会重用它: http\u会话=无 def句柄(事件、上下文): 全局htt

我在Python中为AWS构建了一个lambda函数,它使用
aiohttp
发出一些请求

如AWS所述

Lambda函数代码中的任何声明(处理程序代码之外,请参见编程模型)都保持初始化状态,以便在再次调用函数时提供额外的优化。例如,如果Lambda函数建立数据库连接,而不是重新建立连接,则在后续调用中使用原始连接

因此,我将
aiohttp.ClientSession()
放在handle函数之外,以便将来的lambda函数可能会重用它:

http\u会话=无
def句柄(事件、上下文):
全局http_会话
#如果重用上下文,http_会话将不会为无
如果http_会话为无:
http_session=aiohttp.ClientSession()
#[…]在此处使用http_会话
但是,我必须在不再使用
wait session.close()
后关闭与它的连接,也就是说,当上下文被丢弃时。我无法关闭
handle
中的
http\u会话
,因为这将完全消除重新使用连接的可能性

考虑到这一点,我有什么选择

  • 只要让连接打开,它就会在某个时刻自行关闭
  • 有一种在上下文删除时执行特定代码的方法
  • 没有办法做我想做的事
  • 提前谢谢

    但是,我必须在不再使用wait session.close()后关闭它的连接,也就是说,当上下文被丢弃时。我无法在handle中关闭http_会话,因为这将完全消除重新使用连接的可能性

    是的,没错。如果你关闭它,它就不再是持久连接了

  • 有一种在上下文删除时执行特定代码的方法
  • 我从来没有听说过上下文挂钩。在aws文档中也没有找到类似的内容

  • 只要让连接打开,它就会在某个时刻自行关闭

  • 这就是我的公司目前的处理方式,我在互联网上找到的大多数例子都是这样。保持连接打开是非常安全的。如果一段时间后未使用连接,服务器将关闭连接。在服务器端配置连接关闭后的时间(保持活动超时)。每个服务器的默认值都不同。例如,对于apache,只需5-10秒。

    你说得对。如果你关闭它,它就不再是持久连接了。我从来没有听说过上下文挂钩。保持连接打开是非常安全的。如果一段时间后未使用连接,服务器将关闭连接。在服务器端配置连接关闭后的时间(保持活动超时)。每个服务器的默认值都不同。例如,对于apache来说,这只需要5-10秒。好吧,如果让连接打开没有真正的问题,我认为这是最好的选择。你能回答一下吗?这样我就可以接受你的回答了?