Tengo un servidor REST json simple en mi LAN. Necesito permitir que los clientes en LAN POST/PUT y GET transmitan en vivo sin problemas a través de http. Intenté dos enfoques simples:
Método 1 (sin 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) Método 2 (con 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) Los mismos métodos se utilizan con GET . Probé tanto Apache2 como Nginx, y dado que Nginx dio como resultado un mejor rendimiento, mi servidor REST ahora está vinculado a Nginx. Puedo transmitir y visualizar el video en una topología cliente-servidor-cliente. El método 2 funciona sin problemas (~0 segundos de latencia) y a altos fps; sin embargo, se congela de vez en cuando durante 6 segundos (probablemente la Session esté limitada a una cantidad de llamadas). Sin embargo, el método 1 funciona de forma fiable a fps bajos y con una latencia constante de 0,5 segundos en fotogramas.
Mi pregunta es ¿cómo puedo mejorar técnicamente los métodos para los servicios en tiempo real? (¿Alguien puede dar un ejemplo?) Además, ¿cómo puedo ajustar Nginx para manejar dicho servicio en términos de velocidad y cantidad de solicitudes?
ACTUALIZAR:
Noté que el servidor web (Nginx) está interrumpiendo la transmisión, no tiene problemas cuando las solicitudes se redirigen directamente al número de puerto que escucha mi REST (localhost: 8888) en lugar de localhost (administrado por Nginx)