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

我已经使用 simplehttpserver 设置了一个 http 服务器。我有 2 个客户端使用请求库。两者都连续请求 100 个文件。一个使用持久化,另一个使用非持久化。发送的文件很小,每个大约 20 个字节。计算总时间。结果:非持久化比持久化快 9/10 倍。对此有解释吗?


示例代码服务器:


Handler = SimpleHTTPServer.SimpleHTTPRequestHandler

Handler.protocol_version = "HTTP/1.1" 

httpd = SocketServer.TCPServer(("", 8000), Handler)

httpd.serve_forever()

客户:


header = {"Connection" : "close"} #remove for persistant

s = requests.session()

response = sess.get((url) + filename, headers=header)


大话西游666
浏览 198回答 2
2回答

慕的地8271018

我无法重现这个(Python 3.7)。使用Connection: close标题,我的 RPS 速度降低了大约 25%。服务器.pyimport socketserverimport http.serverPORT = 8000Handler = http.server.SimpleHTTPRequestHandlerHandler.protocol_version = "HTTP/1.1" httpd = socketserver.TCPServer(("", PORT), Handler)httpd.serve_forever()客户端.pyimport requestsimport timedef 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

胡子哥哥

我不知道为什么,但是当我运行它时,我得到了以下结果$ python3 client.py{} 22.51256576012429 rps{'Connection': 'close'} 320.24445743902817 rps{'Connection': 'keep-alive'} 22.209050176933395 rps
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python