为了账号安全,请及时绑定邮箱和手机立即绑定

使用 http 持久化比非持久化慢

使用 http 持久化比非持久化慢

大话西游666 2022-01-05 11:09:50
我已经使用 simplehttpserver 设置了一个 http 服务器。我有 2 个客户端使用请求库。两者都连续请求 100 个文件。一个使用持久化,另一个使用非持久化。发送的文件很小,每个大约 20 个字节。计算总时间。结果:非持久化比持久化快 9/10 倍。对此有解释吗?示例代码服务器:Handler = SimpleHTTPServer.SimpleHTTPRequestHandlerHandler.protocol_version = "HTTP/1.1" httpd = SocketServer.TCPServer(("", 8000), Handler)httpd.serve_forever()客户:header = {"Connection" : "close"} #remove for persistants = requests.session()response = sess.get((url) + filename, headers=header)
查看完整描述

2 回答

?
慕的地8271018

TA贡献1796条经验 获得超4个赞

我无法重现这个(Python 3.7)。


使用Connection: close标题,我的 RPS 速度降低了大约 25%。


服务器.py

import socketserver

import http.server


PORT = 8000

Handler = http.server.SimpleHTTPRequestHandler

Handler.protocol_version = "HTTP/1.1" 

httpd = socketserver.TCPServer(("", PORT), Handler)

httpd.serve_forever()

客户端.py

import requests

import time


def test(headers, n=1500):

    with requests.session() as sess:

        t0 = time.time()

        for x in range(n):

            assert sess.get('http://127.0.0.1:8000/server.py', headers=headers).content

        t1 = time.time()

        print(headers, n / (t1 - t0), 'rps')


test({})

test({"Connection": "close"})

test({"Connection": "keep-alive"})

$ python3 client.py

{} 514.4191683333725 rps

{'Connection': 'close'} 424.7938184319337 rps

{'Connection': 'keep-alive'} 492.5251360628307 rps


查看完整回答
反对 回复 2022-01-05
?
胡子哥哥

TA贡献1825条经验 获得超6个赞

我不知道为什么,但是当我运行它时,我得到了以下结果


$ python3 client.py{} 22.51256576012429 rps

{'Connection': 'close'} 320.24445743902817 rps

{'Connection': 'keep-alive'} 22.209050176933395 rps


查看完整回答
反对 回复 2022-01-05
  • 2 回答
  • 0 关注
  • 197 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号