如何模拟超时响应

ped*_*o91 5 python timeout simulate

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

这个脚本使用httplib:

conn = httplib.HTTPConnection("10.255.255.1")
conn.request("HEAD", "/")
ping = conn.getresponse()
Run Code Online (Sandbox Code Playgroud)

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

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

Pas*_*ten 6

您可以通过在此处查找一些异常来模拟一些httplib错误(具体来说,请查看异常).

非常令人惊讶的是,我注意到它抛出的超时是一个socket.timeout; 来自不同的包装.实际上,我通过给出一个不切实际的小超时作为httplib.HTTPConnection0.0001秒的参数来发现这一点.

因此,您可以通过提高socket.timeout来模拟错误:

def requestResultingInTimeout():
    # Pretend to request
    raise socket.timeout
Run Code Online (Sandbox Code Playgroud)

不要忘了import socket.

您可以像这样处理它:

from socket import timeout
try:
    requestResultingInTimeout()
except timeout:
    print("Now that I got a timeout, I'll print this message instead")
Run Code Online (Sandbox Code Playgroud)