2012-02-17 3 views
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 사용이 스레드 안전하지 않거나 실패의 다른 이유가 있는지 궁금합니다.

답변

2

스레드로부터 안전합니다. 서버 코드의 성능을 조사하고 싶을 수도 있습니다 ...

+2

연결이 성공적으로 협상 된 경우에도 지정된 시간이 지나면 시간 초과로 인해 연결이 끊어집니다. 시간이 정해진 시간 내에 연결이되지 않으면 시간 만 초과되었다고 가정했습니다. 시간 제한을 제거한 후에는 모든 요청이 성공하지만, 내가 원하는 것보다 조금 느립니다. – ClassicThunder

관련 문제