파이썬에서 TLS를 사용해야하는 HTTP 클라이언트가 있습니다. 암호화 된 연결을 위해 을 입력 할 필요가 없으며 인증서 발급자와 같은 원격 컴퓨터에서 정보를 검색 할 수도 있습니다. 내가 종종 많은 HTTP 서버에 연결을 만들 필요가 심하게 행동, 그래서 나는 절대적으로 시간 제한이 필요합니다. 비 TLS 연결의 경우 mysocket.settimeout(5)
내가 원하는 것을 수행합니다. 많은 TLS 파이썬 모듈 중TLS 연결 제한 시간 (기타 몇 가지 어려움)
:
gnutls.errors.OperationWouldBlock: Function was interrupted.
python-openssl가 유사한 문제가 있습니다 :
이python-gnutls이 비 블로킹 소켓을 사용 때문에 소켓의 setTimeout()를 사용하는 것을 허용하지 않습니다
OpenSSL.SSL.WantReadError
표준 라이브러리의 SSL module은 파이썬에서 작동하지 않습니다.2.5.
TLSlite과 같은 다른 라이브러리는 인증서의 메타 데이터에 에 대한 액세스 권한을 부여하지 않은 것 같습니다.
프로그램이 스레드되어 있으므로 신호를 사용할 수 없습니다. urllib2와 같은 표준 라이브러리를 사용할 수 없으므로 HTTP 대화 상자에서 자세한 컨트롤이 필요합니다.
배경 : 이것은 조사 프로젝트 DNSwitness입니다. 관련 SO 스레드 : Timeout on a Python function call 및 How to limit execution time of a function call in Python.
전에에서는 setTimeout (없음) 또는 (1) setblocking으로 시간 제한을 제거하십시오 그러나 프로세서를위한 매우 비용이 많이 드는 바쁜 대기의 일종 아닌가요? – bortzmeyer
수면을 삽입하거나, 스케줄러를 양보하거나, 다른 일을 할 수 있습니다. 그리고 루프에서 오랜 기간을 보내는 것처럼 좋은 서버는 매우 빠르게 응답하려고합니다. –