如何模拟超时响应

Posted

技术标签:

【中文标题】如何模拟超时响应【英文标题】:How to simulate timeout response 【发布时间】:2015-06-26 10:45:45 【问题描述】:

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

此脚本使用 httplib:

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

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

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

【问题讨论】:

【参考方案1】:

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

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

【讨论】:

以上是关于如何模拟超时响应的主要内容,如果未能解决你的问题,请参考以下文章

如何在heroku中有超过30秒的响应超时

我如何根据您的角色超时响应?

如何在可配置的超时时间内响应 Rails 请求

如何在等待响应时增加 AWS Sagemaker 调用超时

如何从 api 获得响应,但不是 504 网关超时问题

服务响应超时,该如何排查?