Название может быть немного расплывчатым, но вот моя цель: у меня есть интерфейсный веб-сервер, который принимает входящие HTTP-запросы, выполняет их предварительную обработку, а затем передает запросы моему настоящему веб-серверу, чтобы получить Ответ HTTP, который затем передается обратно клиенту.
В настоящее время мой интерфейс построен на основе BaseHTTPServer.HTTPServer
, а серверная часть — CherryPy.
Итак, вопрос: есть ли способ взять эти HTTP-запросы/клиентские соединения и вставить их на сервер CherryPy, чтобы получить HTTP-ответ? Одним из очевидных решений является запуск экземпляра бэкенда CherryPy на локальном порту или с использованием сокетов домена UNIX, а затем внешний веб-сервер устанавливает соединение с бэкэндом и передает любые запросы/ответы. Очевидно, что это не идеально из-за накладных расходов.
Мне бы очень хотелось, чтобы серверная часть CherryPy не привязывалась к какому-либо порту, а просто ждала, пока интерфейс передаст клиентский сокет (а также измененную информацию HTTP-запроса), в в этот момент он делает свою обычную магию CherryPy и возвращает запрос непосредственно клиенту.
Я просматривал исходный код CherryPy, чтобы найти способ сделать это, и в настоящее время пытаюсь изменить wsgiserver.CherryPyWSGIServer
, но это становится довольно сложным и, вероятно, не лучшим подходом.