gpt4 book ai didi

python - python 的 httplib 的替代品?

转载 作者:太空狗 更新时间:2023-10-29 18:13:16 25 4
gpt4 key购买 nike

我有一个 python 客户端,它通过标准库的 httlib 推送大量数据。用户提示应用程序运行缓慢。我怀疑这可能部分是由于我使用的 HTTP 客户端。

我可以通过用其他东西替换 httplib 来提高性能吗?

我看到 twisted 提供了一个 HTTP 客户端。与他们的其他协议(protocol)产品相比,它似乎非常基础。

PyCurl 可能是一个有效的替代方案,但它的使用似乎非常非 Pythonic,另一方面,如果它的性能真的很好,那么我可以忍受一些非 Pythonic 代码。

因此,如果您有更好的 Python HTTP 客户端库的经验,请告诉我。我想知道您如何看待与 httplib 相关的性能以及您如何看待实现质量。

更新 0:我对 httplib 的使用实际上非常有限——替换需要执行以下操作:

conn = httplib.HTTPConnection(host, port)
conn.request("POST", url, params, headers)
compressedstream = StringIO.StringIO(conn.getresponse().read())

仅此而已:没有代理、重定向或任何花哨的东西。它是普通的 HTTP。我只需要能够尽快完成。

更新 1:我坚持使用 Python2.4,我正在 Windows 32 上工作。请不要告诉我使用 httplib 的更好方法 - 我想知道一些 httplib 的替代方法。

最佳答案

通常当我遇到 httplib 的性能问题时,问题不在于 httplib 本身,而在于我如何使用它。以下是一些常见的陷阱:

(1) 不要为每个网络请求建立一个新的 TCP 连接。如果您向同一台服务器发出大量请求,而不是这种模式:

    conn = httplib.HTTPConnection("www.somewhere.com")    conn.request("GET", '/foo')    conn = httplib.HTTPConnection("www.somewhere.com")    conn.request("GET", '/bar')    conn = httplib.HTTPConnection("www.somewhere.com")    conn.request("GET", '/baz')

改为这样做:

    conn = httplib.HTTPConnection("www.somewhere.com")    conn.request("GET", '/foo')    conn.request("GET", '/bar')    conn.request("GET", '/baz')

(2) 不要序列化你的请求。您可以使用线程或 asynccore 或任何您喜欢的东西,但如果您从不同的服务器发出多个请求,则可以通过并行运行它们来提高性能。

关于python - python 的 httplib 的替代品?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/508817/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com