【发布时间】:2019-06-08 14:47:05
【问题描述】:
我已经创建了 2 种不同的方式从我的路由装饰函数之一返回:
方法一:
return HTTPResponse(status=200, body=myBody)
方法 2(这样做是为了让 after_request 挂钩读取相同的响应对象,目前。):
response = bottle.response.copy()
response.status = 200
response.body = myBody
return response
myBody 是一个字符串,而不是 dict(我们的上游库已经通过 json.dumps() 将 dict 转换为字符串),而且 myBody 也很大:它是一个有 1 个键的字典,但有 600 多个成员列表作为值。
我的问题是: 方法 1 返回调用客户端的速度非常快(客户端通过 POST 请求使用请求库)。
方法 2 大约慢了 10 倍(调用客户端等待大约 2 分钟才能获得响应,而方法 1 为 2 秒)。
我还禁用了任何 after_hook 逻辑,只是为了隔离任何其他影响。
有什么暗示可能是根本原因吗?
【问题讨论】:
-
您为什么要复制响应而不是对其采取行动?
-
@eatmeimadanish 无论哪种方式,速度都很慢。
-
只是好奇:一个典型的
myBody有多少字节? -
@ronrothmanℝℝ 它是 2.4 兆字节。
-
好的,是的,这已经足够大了,我希望看到性能上的差异。