我有uWSGI的阻塞(同步)web框架。任务是否为kubernetes准备/健康端点以确保pod活着。端点本身没有问题,但问题是同步的。例如,如果我在uWSGI中定义了8个进程,并且web应用程序处理8个重请求,则对/ health的调用将排队并依赖于超时,kubernetes可能在某段时间内没有收到响应并决定终止/重启pod。当然,我可以在不同的端口上运行另一个Web服务,但它需要更改代码并增加部署的复杂性。也许我错过了一些东西,并且可以在uWSGI中定义独占工作者以非阻塞方式处理/健康端点?提前致谢!
WSGI是一种固有的同步协议。已经有一些工作要创建一个名为ASGI的新的异步友好替代品,但它只能由Django Channels项目AFAIK实现。虽然您可以在异步服务器中安装同步模式WSGI应用程序(通常使用线程),但您不能采用其他方式。例如,您可以编写一些twisted.web
代码来抓取对/health
的请求并通过Twisted本地处理它们并将其他所有内容移交给WSGI容器。我不知道有什么现成的。