使用AJP从Python请求Java web服务器

0 投票
1 回答
994 浏览
提问于 2025-04-17 00:28

我需要实现一个Python的网页应用,这个应用要通过网络服务获取数据(也就是用GET请求和JSON格式的响应)。

这个API服务器是用Java写的。初步测试显示,如果通过urllib2来调用API,每次请求都要打开和关闭连接,这样会造成很大的性能损失。

如果我在API服务器上启用AJP(Apache JServ Protocol),那么我应该用哪个库来从Python发起AJP协议的请求呢?我在网上查了Plup,但找不到一个明确的方法来在Python中请求和获取数据,而不仅仅是把它转发到别的地方。

使用AJP是否是个好主意?显然,我需要维护一个连接池来进行AJP请求,但我在Plup中找不到相关的信息。

谢谢。

1 个回答

1

我对AJP是什么完全不懂。而且你也没有解释什么是“显著的开销”,所以我可能不太适合回答这个问题。

不过如果我是你,我会先试试几个小技巧:

在urllib2中启用HTTP 1.1的keep-alive

(这里有一个使用其他库的例子 Python urllib2与keep alive)

HTTP 1.1的keep-alive连接不会在后续请求中关闭TCP/IP连接。

使用Spawning / eventlets网络服务器,它支持非阻塞IO补丁,适用于urllib / Python套接字。

http://pypi.python.org/pypi/Spawning/

这样可以让Python中的并行处理更加稳定,特别是当应用程序的开销主要是输入/输出,而不是使用CPU来处理请求时。JSON解码通常不会占用太多CPU资源。

通过这两个技巧,我们的Python网络应用能够从微软IIS支持的API服务器(集群)中每秒处理1000个请求。

撰写回答