蝗虫:得到0响应status_code和无内容

时间:2013-06-26 10:05:27

标签: python http locust

我使用Locust(http://locust.io)编写了一个简单的负载测试。

现在我注意到有时(使用更高的负载)我从post调用中得到的响应的status_code为0,内容为None。 0状态代码不会自动识别为Locust中的故障,因此我必须手动测试它。

我的代码片段是:

with self.client.get(path, catch_response=True) as response:
    if response.status_code != 200:
        response.failure(path + ": returned " + str(response.status_code))
    elif check not in response.content:
        response.failure(path + ": wrong response, missing '" + check + "'")

注意:check是预期响应内容的一部分的变量。

问题是:这是预期的行为吗?这是Locust(或Python)的问题还是在测试的应用程序中出错?

1 个答案:

答案 0 :(得分:9)

来自http://docs.locust.io/en/latest/writing-a-locustfile.html

中的蝗虫文档
  

安全模式

     
    

HTTP客户端配置为在safe_mode中运行。这样做的是,由于连接错误,超时或类似原因而失败的任何请求都不会引发异常,而是返回一个空的虚拟Response对象。请求将在Locust的统计信息中报告为失败。返回的虚拟Response的内容属性将设置为None,并且status_code将为0。

  

看起来服务器无法处理你所拥有的所有请求,其中一些是超时的。