Я извлекаю постоянно обновляемые данные из тега html, используя javascript в консоли инструментов разработчика chrome, и отправляю их на веб-сервер (флакон python), чтобы иметь возможность дальнейшей обработки данных в приложении python.
Проблема в том, что в 50% случаев запрос занимает менее 5 мс, НО остальные 50% времени запрос занимает около 300 мс, что слишком много, поскольку приложение, которое я собираюсь создать, чувствительно к задержке.
Как я могу сократить время, необходимое для ВСЕХ HTML-запросов POST, до менее чем 5 мс?
Код JavaScript, используемый в Chrome:
var xhr = new XMLHttpRequest();
xhr.open("POST", "http://localhost:5000/mqtt/", true);
xhr.setRequestHeader('Content-Type', 'text/plain');
console.log(Date.now());
xhr.send(Date.now().toString());
Код Python (Python 3.6):
import time
from flask import request, Flask
from flask_cors import CORS
application = Flask(__name__)
CORS(application)
@application.route('/mqtt/', methods=['POST'], strict_slashes=False)
def process_prices():
start = time.time()
data = request.get_data().decode("utf-8")
time_decoding = time.time()
print('timestamp javascript', data)
print('timestamp python', time.time()*1000)
print('total time: ', int((time.time()-start)*1000))
print('decoding time: ', int((time_decoding - start) * 1000))
return "OK"
if __name__ == '__main__':
application.run(debug=False)
Результаты:
Когда я выполняю код javascript в первый раз, разница между меткой времени, собранной в коде javascript, и меткой времени, измеренной в python, составляет около 300 мс. Если в течение 10 секунд после первого запуска я снова запускаю тот же код javascript, разница во времени уменьшается до менее чем 5 мс. Если я подожду 10-11 секунд, пока код будет запущен во второй раз, код снова займет 300 мс. если я продолжаю повторять выполнение кода javascript несколько раз каждые 2-3 секунды, каждый второй раз запрос занимает 300 мс, чтобы быть принятым сервером, а каждый второй раз - только 1-5 мс.
Это заставляет меня думать, что либо chrome, либо флеш-сервер каким-то образом настраиваются таким образом, чтобы добавить дополнительную задержку, и что должна быть возможность сократить время, необходимое для ВСЕХ запросов, чтобы добраться до веб-сервера, до менее чем 5 мс, а не только половина из них.
Вывод с веб-сервера колбы:
timestamp javascript 1555342312986
timestamp python 1555342313289.659
total time: 1
decoding time: 0
127.0.0.1 - - [15/Apr/2019 17:31:53] "POST /mqtt/ HTTP/1.1" 200 -
timestamp javascript 1555342314901
timestamp python 1555342314903.6602
total time: 0
decoding time: 0
127.0.0.1 - - [15/Apr/2019 17:31:54] "POST /mqtt/ HTTP/1.1" 200 -
timestamp javascript 1555342315912
timestamp python 1555342316217.7195
total time: 1
decoding time: 0
127.0.0.1 - - [15/Apr/2019 17:31:56] "POST /mqtt/ HTTP/1.1" 200 -