一个包装器,用于使用Twisted运行pythonweb应用程序,这种方式非常适合Kubernetes。

kubernetes-wsgi的Python项目详细描述


库伯内特斯

一个包装器,用于使用Twisted运行pythonweb应用程序,这种方式非常适合Kubernetes。在

这还包括普罗米修斯度量支持。在

快速入门

要安装:

` pip install kubernetes-wsgi `

启动应用程序:

` python -m kubernetes_wsgi myapp 8000 `

其中myapp是包含WSGI应用程序函数的重要模块名。在

为什么是线程?在

pythonwsgi服务器的黄金标准是Gunicorn,它以其高效并发的多进程执行模式而闻名,尽管存在可怕的pythongil(全局解释器锁)。不幸的是,在使用容器时,由于容器通常只期望只有一个进程,因此多进程工作器模型可能很难使用。具体地说,这意味着如果其中一个分叉的工人被OOM击中并死亡,主进程将简单地重新启动它,而不会触发Kubernetes中OOM d Pods的常用度量。类似地,在Kubernetes中,我们有一种不同的方法来处理多进程并发,这是通过部署多个副本实现的。在最简单的版本中,可以使用多个副本,每个副本一次只处理一个请求,但是使用线程池可以提高吞吐量,因为大多数web应用程序在大多数时间都被阻塞在I/O上(通常等待来自数据库或另一个web服务的响应)。在

为什么扭曲?在

Gunicorn本身有一个threadpool模式,但是它使用futuresthreadpool实现,因此使用起来有些困难。Twisted的线程池更有效。这也允许将Prometheus度量作为本机Twisted web处理程序安装,这样即使线程池用尽,它也可以工作,这意味着即使在系统过载期间,度量也可以继续工作。在

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
JavaEJB3.0托管bean注入和db连接关闭   amazon web服务用Java连接AWS aerospike实例   java如何使用Springsecurity以编程方式登录用户?   Spring批处理代理失败。lang.ClassCastException:com。太阳代理$Proxy20无法强制转换为   java并发中的条件语句与信号量   java如何使用springdatajpa mongoRepository进行查询和更新?   java将代码从bufferedreader转换为scanner   java SonarQube问题:重命名此常量名称以匹配正则表达式“^[AZ][AZ09]([AZ09]+)$”   带有包含嵌套对象的json主体的java POST请求   java类akka。男演员TypedActor$MethodCall无法访问修饰符为“public abstract”的类JobManager的成员   Android Studio Assistant中的java Firebase,异常错误   javagwt。GWT开发模式控制台中未显示日志   java JAXWS wsimport正在停止重新编译   java以编程方式分析jar文件