0
공용으로 가기 전에 작업하고있는 사이트를 테스트하기 위해 작은 파이썬 스크립트를 만들었습니다. while (true) 루프에서 아래 코드를 실행하는 5 분마다 새 스레드를 생성하여 작동합니다.httplib.HTTPSConnection은 동시 환경에서 SSL 오류를 발생시킵니다.
conn = httplib.HTTPSConnection("site", 000, "pem", "pem", timeout = 30)
conn.request("GET", "/reports.php?" + url, headers = headers)
response = conn.getresponse()
read = (response.read())
스레드가 하나뿐이면 코드 요청/응답이 매번 성공합니다. 새로운 쓰레드를 생성 할 때 나는 아래의 에러를 자주 받는다. 결국 약 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
ssl 코드 httplib 사용이 스레드 안전하지 않거나 실패의 다른 이유가 있는지 궁금합니다.
연결이 성공적으로 협상 된 경우에도 지정된 시간이 지나면 시간 초과로 인해 연결이 끊어집니다. 시간이 정해진 시간 내에 연결이되지 않으면 시간 만 초과되었다고 가정했습니다. 시간 제한을 제거한 후에는 모든 요청이 성공하지만, 내가 원하는 것보다 조금 느립니다. – ClassicThunder