【发布时间】:2010-10-06 17:58:43
【问题描述】:
标题可能有点含糊,但这是我的目标:我有一个前端网络服务器,它接收传入的 HTTP 请求,对它们进行一些预处理,然后将请求传递给我的 real 网络服务器获取 HTTP 响应,然后将其传递回客户端。
目前,我的前端是基于 BaseHTTPServer.HTTPServer 构建的,后端是 CherryPy。
所以问题是:有没有办法获取这些 HTTP 请求/客户端连接并将它们插入 CherryPy 服务器以获取 HTTP 响应?一个明显的解决方案是在本地端口或使用 UNIX 域套接字上运行 CherryPy 后端实例,然后前端 Web 服务器与后端建立连接并中继任何请求/响应。显然,由于开销,这并不理想。
我真正想要的是 CherryPy 后端不绑定到任何端口,而只是坐在那里等待前端传递客户端的套接字(以及修改后的 HTTP 请求信息),此时它会执行正常的 CherryPy 魔法并将请求直接返回给客户端。
我一直在仔细阅读 CherryPy 的源代码以找到实现此目的的方法,目前正在尝试修改 wsgiserver.CherryPyWSGIServer,但它变得非常麻烦,可能不是最好的方法。
【问题讨论】:
-
你在做什么预处理?解决方案可能就像用几行代码扩展 CherryPy 一样简单。
-
我正在尝试处理 HTTP/1.1 升级请求(请参阅 stackoverflow.com/questions/3859823/…)。我希望 CherryPy 发送一个 HTTP 响应,然后将套接字交给我的协议处理程序。