跳转到主要内容

为Kubernetes运行Python Web应用而设计的包装器,使用Twisted的方式,可以很好地适用于Kubernetes。

项目描述

# Kubernetes_WSGI

为Kubernetes运行Python Web应用而设计的包装器,使用Twisted的方式,可以很好地适用于Kubernetes。

这还包括Prometheus指标支持。

## 快速入门

安装

` pip install kubernetes-wsgi `

启动您的应用程序

` python -m kubernetes_wsgi myapp --port 8000 `

其中 myapp 是包含您的WSGI应用函数的可导入模块名称。

## 为什么使用线程?

Python WSGI服务器的黄金标准是Gunicorn,以其多进程执行模式而闻名,即使在令人恐惧的Python GIL(全局解释器锁)的情况下也能实现高效的并发。不幸的是,当与容器一起工作时,多进程工作模式可能会很难处理,因为容器通常只期望有单个进程。具体来说,这意味着如果其中一个分叉的工作进程被OOM(内存不足)并杀死,主进程将简单地重新启动它,而不会触发Kubernetes中OOM’d Pods的通常指标。同样,我们也在Kubernetes中有另一种处理多进程并发的方法,即通过具有许多副本的Deployment。在最简单的情况下,我们可以使用多个副本,每个副本一次处理一个请求,但使用线程池可以通过利用大多数Web应用大部分时间都阻塞在I/O上(通常等待数据库或其他Web服务的响应)的事实来提高吞吐量。

## 为什么选择Twisted?

Gunicorn 本身确实有线程池模式,但与使用 future ThreadPool 实现的线程池相比,使用起来有些不便。Twisted 的线程池效率更高。这还允许将 Prometheus 度量标准作为原生 Twisted 网络处理程序安装,即使在线程池耗尽的情况下也能正常工作,这意味着即使在系统过载的情况下,您的度量标准仍然可以正常工作。

项目详情


下载文件

下载适用于您的平台文件。如果您不确定选择哪个,请了解有关 安装包 的更多信息。

源分布

kubernetes_wsgi-1.2.tar.gz (11.7 kB 查看哈希)

上传时间

构建分布

kubernetes_wsgi-1.2-py3-none-any.whl (9.4 kB 查看哈希)

上传时间 Python 3

由以下提供支持