Locust Performance 不同于 time() 函数

Locust Performance different from time() function

我写了一个 FastAPI 并尝试使用不同的工具执行负载测试。我发现 Locust 的性能与 time() python 函数有很大不同:

有人可以解释一下这是为什么吗?哪个更准确?


以下是我的程序:

快速API函数:

app = FastAPI()

@app.post('/predict/')
def predict(request: PredictRequest):
    logger.info('Invocation triggered')
    start_time = time.time()
    response = adapter.predict(request.dict())
    latency_time = (time.time() - start_time) * 1000
    latency_logger.info(f'Predict call latency: {latency_time} ms')
    return response

蝗虫参数: -u 500 -t 10 -r 500

蝗虫文件:

class User(HttpUser):
    wait_time = between(1, 2.5)
    host = "http://0.0.0.0:80"

    @task
    def generate_predict(self):
        self.client.post("/predict/",
                         json={"cid": [],
                               "user_id": 5768586,
                               "store_ids": [2725, 2757],
                               "device_type": "ios"},
                         name='predict')

蝗虫输出:

蝗虫和时间衡量的是两种不同的事物。 time 是衡量服务器端 运行 仅 adapter.predict 函数需要多长时间。 Locust 测量客户端从您的服务器路由获得响应所花费的时间,这不仅包括您的 adapter.predict 调用,还包括谁知道在那之前和之后的所有其他内容。 “哪个更准确”取决于您要测量的是什么。如果你只是想知道调用adapter.predict需要多长时间,那么时间会更准确。如果您想知道客户端需要多长时间才能获得您的 /predict 路线的结果,Locust 更准确。