基本上,我有一个 url 来获取一些 XML 数据。我不能透露的端点,但正在做:
curl -v "http://my-url.com/some/endpoint"
返回 200 OK ,内容几乎立即返回。
使用 Kenneth Reitz 的请求模块,我有一个 POST 请求和一个 GET 请求,它们都需要 30 秒才能返回内容。
如果我这样使用它:
from timeit import Timer
t = Timer(lambda: requests.get(myurl).content)
print t.timeit(number=1)
30.2136261463
每次平均需要 30.2 秒。与我的 POST 请求相同。如果我不要求内容而只要求 status_code 响应,我会遇到同样的情况,除非我通过stream=True,我可以快速得到响应,但不是内容。
我的困惑在于 curl 命令......我在 10 毫秒内得到了响应和内容。我尝试在我的 python 测试中伪造用户代理,尝试将大量参数传递给 get() 函数等。 curl 和 python-requests 如何执行我不知道的请求之间肯定存在一些主要区别。我是新手,所以如果我遗漏了一些明显的东西,我深表歉意。
我还想提一下,我为此尝试了多台机器、多个版本的 curl、python,甚至尝试了一些 REST 客户端,如 Postman 等。只有 curl 执行得很快——顺便说一句,在每种情况下都达到相同的端点。我知道其中一个选项是在我的测试中进行子进程调用以 curl ,但是......这是个好主意吗?
编辑:我关心内容。我知道我可以快速获得响应代码(标题)。
提前致谢,
提霍米尔。
更新:
我现在在我的测试中使用 pycurl2,所以这只是一种解决方法,因为我希望我可以对所有事情都使用 python-requests。仍然好奇为什么 curl 这么快。