#python #python-requests
#python #python-запросы
Вопрос:
Я настроил http-сервер, используя simplehttpserver. У меня есть 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)
Комментарии:
1. Можете ли вы предоставить несколько примеров вашего кода?
Ответ №1:
Я не могу воспроизвести это (Python 3.7).
С Connection: close
заголовком я получаю примерно на 25% медленнее RPS.
server.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()
client.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
Ответ №2:
Я не уверен, почему, но когда я запустил его, я получил следующий результат
$ python3 client.py{} 22.51256576012429 rps
{'Connection': 'close'} 320.24445743902817 rps
{'Connection': 'keep-alive'} 22.209050176933395 rps