如何模拟超时响应

时间:2015-04-19 20:34:22

标签: python timeout simulate

我正在创建一个Python脚本,它始终检查webapp是否正常,因为通常会对多个请求发送超时响应。

此脚本使用httplib:

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

然后简单地分析返回的http代码。

我不控制webapp,所以我无法创建一个可以返回任何我想要的端点,所以我的问题是:我如何模拟我收到超时?

1 个答案:

答案 0 :(得分:5)

您可以通过在here查找一些异常来模拟一些httplib错误(具体来说,请查看例外)。

非常令人惊讶的是,我注意到它抛出的超时是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")
相关问题