微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在 python 客户端中关闭与 kubernetes API 服务器的客户端连接

如何解决在 python 客户端中关闭与 kubernetes API 服务器的客户端连接

我在 python 中使用 kubernetes-client 库并查看 various examples,看来我们不需要明确关闭与 API 服务器的客户端连接。客户端连接是否自动终止,或者示例是否缺少关闭连接的调用?我还找到了 API 的文档页面(例如 AppsV1),那里显示的示例使用上下文管理器进行调用,因此连接在那里自动断开,但我仍然对不使用的脚本有疑问上下文管理器方法

解决方法

Kubernetes 的 API 是基于 HTTP 的,因此您通常可以在不显式关闭连接的情况下逃脱。如果您有一个简短的脚本,则应该在脚本结束时自动清理内容,并且可以不显式关闭内容。

您链接到的特定文档页面显示了一种安全的方法:

with kubernetes.client.ApiClient(configuration) as api_client:
    api_instance = kubernetes.client.AppsV1Api(api_client)
    api_instance.create_namespaced_controller_revision(...)

如果您将 ApiClient 传递给其构造函数,则每个 API 版本的客户端对象是无状态的,因此根据需要创建这些对象是安全的。

ApiClientincludes 是一个显式的 close 方法,因此您也可以在没有上下文管理器语法的情况下执行此操作(不太安全):

api_client = kubernetes.client.ApiClient(configuration)
apps_client = kubernetes.client.AppsV1Api(api_client)
...
api_client.close()

库客户端首页 README 建议的路径未明确创建 ApiClient。查看 one of the generated models' code,如果您没有明确传递 ApiClient 选项,将为每个 API 版本客户端对象创建一个新选项;这也包括一个连接池。这可能会泄漏本地内存并导致与集群的额外连接,但对于小脚本,这对您来说可能无关紧要。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?