2015-04-19 3 views
2

Я создаю скрипт Python, который всегда проверяет, нормально ли работает webapp, потому что обычно было отправлено ответ на тайм-аут на несколько запросов.Как имитировать ответ на тайм-аут

Этот скрипт использует HTTPLIB:

conn = httplib.HTTPConnection("10.255.255.1") 
conn.request("HEAD", "/") 
ping = conn.getresponse() 

Затем просто анализирует код HTTP возвращается.

Я не управляю webapp, поэтому я не могу создать конечную точку, которая вернет мне то, что я хочу, поэтому мой вопрос: как я могу имитировать то, что я получил таймаут?

ответ

3

Вы можете имитировать некоторые ошибки httplib, просмотрев некоторые из исключений в here (в частности, взгляните на исключения).

Очень удивительно, что я заметил, что тайм-аут, который он выбрал, - socket.timeout; из другого пакета. Фактически, я обнаружил это, предоставив нереально малый тайм-аут в качестве аргумента для httplib.HTTPConnection из 0,0001 секунд.

Таким образом, вы можете имитировать ошибку, поднимая socket.timeout:

def requestResultingInTimeout(): 
    # Pretend to request 
    raise socket.timeout 

Не забудьте import socket хотя.

Вы могли бы справиться с этим, как, например:

from socket import timeout 
try: 
    requestResultingInTimeout() 
except timeout: 
    print("Now that I got a timeout, I'll print this message instead") 
+1

Wow большой ответ! Я бы, конечно, ответил бы на этот вопрос, если бы смог. – PascalVKooten

Смежные вопросы