我使用uWSGI阻止了(同步)Web框架。任务是否为kubernetes准备/ health端点以确保Pod处于活动状态。端点本身没有问题,但是问题是同步的。例如,如果我在uWSGI中定义了8个进程,而Web应用程序中定义了8个繁重的请求,则对/ health的调用将排队,并取决于超时,kubernetes可能在一段时间内未收到响应,并决定终止/重启pod。当然,我可以在不同的端口上运行另一个Web服务,但这将需要更改代码并增加部署的复杂性。也许我缺少了一些东西,并且可以在uWSGI中定义专有工作程序以非阻塞方式处理/ health端点吗?预先感谢!
答案 0 :(得分:0)
WSGI是一种固有的同步协议。已经做了一些工作来创建一个名为ASGI的新的异步友好替代程序,但是它仅由Django Channels项目AFAIK实现。虽然您可以在异步服务器中安装同步模式WSGI应用程序(通常使用线程),但您不能采用其他方法。因此,例如,您可以编写一些twisted.web
代码来捕获对/health
的请求,并通过Twisted本地处理请求,然后将其他所有内容移交给WSGI容器。我对此一无所知。