0

我必须实现一个 Python Web 应用程序,该应用程序对通过 Web 服务(带有 GET 请求和 JSON 响应的 API)可用的数据进行操作。

API 服务器是用 Java 实现的。如果通过 urllib2 进行 API 调用(每个请求打开和关闭连接),初步测试显示开销很大。

如果我在 API 服务器中启用 AJP,我应该使用哪个库来使用 Python 中的 AJP 协议执行请求?我用谷歌搜索了 Plup,但我找不到在 Python 中请求和使用数据的明确方法,而不仅仅是在其他地方代理它。

使用 AJP 是一个好的解决方案吗?显然我必须维护一个连接池来执行 AJP 请求,但是我在 Plup 中找不到任何相关的东西。

谢谢你。

4

1 回答 1

1

我不知道 AJP 是什么。此外,您没有打开“重大开销”的内容,所以我可能是一个可怜的人来回答这个问题。

但如果我是你,我会先尝试一些技巧:

在 urllib2 上启用 HTTP 1.1 keep-alive

(这是一个使用另一个库Python urllib2 和 keep alive的示例)

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

使用 Spawning / eventlets Web 服务器,它为 urllib / Python 套接字执行非阻塞 IO 补丁。

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

当应用程序中的开销是输入/输出时,这将使 Python 中的并行化更加健壮,而不是使用 CPU 来处理请求。JSON 解码很少受 CPU 限制。

通过这两个技巧,我们能够在来自 Microsoft IIS 支持的 API 服务器(场)的 Python Web 应用程序中每秒消耗 1000 个请求。

于 2011-08-28T15:47:09.967 回答