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