#python #apache #nginx #python-requests #http-post
Вопрос:
У меня в локальной сети есть простой сервер json REST. Мне нужно, чтобы клиенты в локальной сети размещали/размещали и получали прямую трансляцию с камеры по http. Я попробовал два простых подхода:
Способ1 (без Session
):
while (frame):
dict_obj = image_to_dict_converter(frame)
json_obj = str(json.loads(dict_obj))
requests.put(url, headers=headers, data = json.dumps({'data': str(json.loads(json_obj))}), timeout = 0.1)
Способ2 (с Session
):
ses = requests.Session()
while (frame):
dict_obj = image_to_dict_converter(frame)
json_obj = str(json.loads(dict_obj))
ses.put(url, headers=headers, data = json.dumps({'data': str(json.loads(json_obj))}),timeout = 0.1)
Те же методы используются GET
и с. Я пробовал как на Apache2, так и на Nginx, и, поскольку Nginx повысил производительность, мой сервер REST теперь подключен к Nginx. Я могу транслировать и визуализировать видео в топологии клиент-сервер-клиент. Метод2 работает плавно (задержка~0 секунд) и при высоких кадрах в секунду, однако время от времени зависает на 6 секунд (вероятно Session
, ограничено количеством вызовов). Метод1 надежно работает, однако, при низких кадрах в секунду и с постоянной задержкой в кадрах 0,5 секунды.
Мой вопрос в том, как я могу технически улучшить методы предоставления услуг в реальном времени? (Может ли кто-нибудь привести пример?) Кроме того, как я могу настроить Nginx для обработки такой службы с точки зрения скорости и количества запросов?
ОБНОВЛЕНИЕ:
Я заметил, что веб-сервер (Nginx) прерывает поток, у него нет проблем, когда запросы перенаправляются непосредственно на номер порта, который прослушивает мой REST (локальный хост:8888) вместо локального хоста (управляется Nginx)