Питон: Как использовать методы POST или GET в бесконечном цикле?

#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)