Проверка работоспособности в блокирующих (синхронных) веб-фреймворках - PullRequest
0 голосов
/ 21 апреля 2019

У меня есть блокирующий (синхронный) веб-фреймворк с uWSGI.Задача, если подготовить / конечную точку здоровья для kubernetes, чтобы убедиться, что стручок жив.Нет проблем с самой конечной точкой, но проблема носит синхронизированный характер.Например, если я определяю 8 процессов в uWSGI, а процессы веб-приложений - 8 тяжелых запросов, вызов / health будет поставлен в очередь и зависит от таймаутов, kubernetes может не получить ответ через некоторое время и решит убить / перезапустить модуль.Конечно, я могу запустить другой веб-сервис на другом порту, но это потребует изменений в коде и усложнения развертывания.Может быть, я что-то упускаю и возможно определить исключительного работника в uWSGI для неблокирующей обработки / конечной точки работоспособности?Заранее спасибо!

1 Ответ

0 голосов
/ 22 апреля 2019

WSGI является по своей сути синхронным протоколом. Была проделана определенная работа по созданию новой асинхронной замены под названием ASGI, но она реализована только в проекте AFAIK на канале Django. Хотя вы можете смонтировать приложение WSGI в режиме синхронизации на асинхронном сервере (обычно с использованием потоков), вы не можете пойти другим путем. Таким образом, вы могли бы, например, написать некоторый код twisted.web, который захватывает запросы к /health и обрабатывает их изначально через Twisted и передает все остальное в контейнер WSGI. Я ничего не знаю с полки для этого, хотя.

...