Я пытаюсь использовать HTTPConnection
(2.7.8), чтобы сделать запрос, и я установил тайм-аут на 10 с помощью HTTPConnection(host, timeout=10)
. Однако HTTPConnection.request()
, похоже, не истекает через 10 секунд. На самом деле, HTTPConnection.timeout
, кажется, даже не читается HTTPConnection.request()
(оно читается только HTTPConnection.connect()
. Правильно ли я понимаю? timeout
применимо только к connect()
, а не request()
? Есть ли способ таймаута request()
?
Обновление:
Я думаю, что еще больше сузил проблему: если я не предоставлю схему, она не будет соблюдать тайм-аут сокета. Если схема была предоставлена, то есть полный URL-адрес был http://google.com:22222
, то время ожидания истекло соответственно. Интересно, почему наличие схемы должно иметь значение. То есть следующее не соблюдает тайм-аут
socket.setdefaulttimeout(3)
conn = HTTPConnection('google.com:22222')
conn.timeout = 3
conn.request('GET', '')
тогда как это делает:
socket.setdefaulttimeout(3)
conn = HTTPConnection('http://google.com:22222')
conn.timeout = 3
conn.request('GET', '')
Однако это происходит не со всеми доменами.
Спасибо
request()
. Пример URL: google.com:2222. - person Kar   schedule 23.02.2015socket.getaddrinfo()
, чтобы получить IP-адрес. Похоже, та же проблема, что и время ожидания ftplib.FTP имеет непоследовательное поведение:request()
выполняет несколько операций с сокетами. Каждая операция ограничена тайм-аутом. Но совмещение нескольких операций может занять больше времени. - person jfs   schedule 23.02.2015http://google.com:22222
, время истекло. Интересно, почему наличие схемы должно иметь значение. - person Kar   schedule 23.02.2015HTTPConnection.debuglevel=1
) - person jfs   schedule 23.02.2015