Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

348
Visualizações
Respuesta transmitida de Python Quart/Hypercorn que causa net::ERR_HTTP2_PROTOCOL_ERROR 200

Tengo una aplicación Quart con la que transmito una respuesta al cliente. Estoy usando asyncio.sleep para retrasar la finalización de la respuesta, si configuro el retraso en 59 segundos, todo funciona bien. La transmisión se completa sin ningún problema. Si aumento el tiempo a 120 segundos, la respuesta parece agotarse. Esa es la primera parte de la transmisión que recibe el cliente, pero después de unos 60 segundos, el navegador arroja un error en Chrome: net::ERR_HTTP2_PROTOCOL_ERROR 200. Firefox arroja un TypeError.

Estoy usando Hypercorn con Nginx.

el archivo hypercorn config.py dice:

 Shutdown_timeout = 123.0 ssl_handshake_timeout = 123.0 startup_timeout = 123.0

la configuración relevante en nginx.conf:

 location @proxy_to_app { proxy_read_timout = 600s }

No sé cómo resolver esto.

Descubrí el origen del problema. No tiene nada que ver con Quart, Hypercorn o Nginx. El problema es con Cloudflare y http2, es causado por WriteTimeout. Vea esta respuesta: ¿De qué se trata net::ERR_HTTP2_PROTOCOL_ERROR?

La pregunta entonces es cómo cambiar esto en Cloudlfare.

No tengo Quart configurado para trabajar en http2, ¿eso ayudaría?

over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

La única solución que encontré fue romper el sueño y enviar datos provisionales al cliente para mantener viva la conexión.

 async def async_generator(): content_arr = [ json.dumps({'first':'some data'}), json.dumps({'alive':''}), #required to http2 connection alive json.dumps({'final' : 'final data'}) ] for i,html in enumerate(content_arr): print(i) if i > 0: await asyncio.sleep(59) #this delays sending the final data 118 seconds yield html.encode()
over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda