python - httplib.HTTPSConnection 在并发环境中导致 SSL 错误

标签 python ssl httplib

我制作了一个小的 Python 脚本,以在公开之前对我一直在开发的网站进行压力测试。它通过每 5 分钟生成一个新线程来运行,该线程在 while(true) 循环中运行以下代码。

conn = httplib.HTTPSConnection("site", 000, "pem", "pem", timeout = 30)
conn.request("GET", "/reports.php?" + url, headers = headers)
response = conn.getresponse()
read = (response.read())

如果我只有 1 个线程,那么代码请求/响应每次都会成功。当我创建新线程时,我会更频繁地收到以下错误。最终,当有大约 10 个线程时,它会在大约 90% 的时间内失败。

Traceback (most recent call last):
  File "/usr/lib/python2.7/threading.py", line 552, in __bootstrap_inner
    self.run()
  File "/usr/lib/python2.7/threading.py", line 505, in run
    self.__target(*self.__args, **self.__kwargs)
  File "stresstest.py", line 32, in threadproc
    stressTest(conn)
  File "stresstest.py", line 76, in stressTest
    response = conn.getresponse()
  File "/usr/lib/python2.7/httplib.py", line 1027, in getresponse
    response.begin()
  File "/usr/lib/python2.7/httplib.py", line 407, in begin
    version, status, reason = self._read_status()
  File "/usr/lib/python2.7/httplib.py", line 365, in _read_status
    line = self.fp.readline()
  File "/usr/lib/python2.7/socket.py", line 430, in readline
    data = recv(1)
  File "/usr/lib/python2.7/ssl.py", line 232, in recv
    return self.read(buflen)
  File "/usr/lib/python2.7/ssl.py", line 151, in read
    return self._sslobj.read(len)
SSLError: The read operation timed out

我想知道 httplib 使用的 ssl 代码是否不是线程安全的,或者是否有其他原因导致失败?

最佳答案

它是线程安全的。您可能想开始研究服务器代码的性能...

关于python - httplib.HTTPSConnection 在并发环境中导致 SSL 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9334873/

相关文章:

python - 谷歌云机器学习引擎: Create model version failed

python - 在 Python 中比较设备序列号

python - 为什么我的 PyQt 应用程序在 Mac OS X 的后台打开?

amazon-web-services - SSL 证书不起作用(AWS Route 53)

asp.net - IIS - 需要特定 MVC Controller 的 SSL 客户端证书

Python httplib [多个请求] - 我可以保持连接打开多长时间?

python - 如果 RDC 最小化,Sikuli 脚本不会运行

c# - 建立 SSL\TLS 连接 (X509Chain.Build()) 花费的时间太长

python - 如何将 Python 中的多部分/相关请求发送到 SOAP 服务器?

SSL EOF 发生违反协议(protocol)与 python httplib