标题可能有点模糊,但这是我的目标:我有一个前端网络服务器,它接收传入的HTTP请求,对它们进行一些预处理,然后将请求传递给我的真正的网络服务器获取HTTP响应,然后将其传递回客户端。
目前,我的前端是由BaseHTTPServer.HTTPServer
构建的,后端是CherryPy。
所以问题是:有没有办法获取这些HTTP请求/客户端连接并将它们插入CherryPy服务器以获取HTTP响应?一个显而易见的解决方案是在本地端口上运行CherryPy后端的实例或使用UNIX域套接字,然后前端Web服务器与后端建立连接并中继任何请求/响应。显然,由于开销,这并不理想。
我真正喜欢的是CherryPy后端不绑定到任何端口,但只是坐在那里等待前端传递客户端的套接字(以及修改后的HTTP请求信息) ),此时它执行正常的CherryPy魔术并将请求直接返回给客户端。
我一直在仔细阅读CherryPy源代码来找到完成此任务的方法,目前我正在尝试修改wsgiserver.CherryPyWSGIServer
,但它变得非常毛茸茸,可能不是最好的方法。
答案 0 :(得分:1)
你的主应用程序是wsgi应用程序吗?如果是这样,您可以编写一些包含它的middleware并在传递给主应用程序之前完成所有请求争用。
如果这是可能的话,它将避免你必须运行两个网络服务器以及你遇到的所有问题。
答案 1 :(得分:0)
在Handling HTTP/1.1 Upgrade requests in CherryPy回答了升级问题。不确定是否解决了这个问题。