Estoy ejecutando una aplicación Flask / Gunicorn Python en un dinamómetro Heroku Cedar. La aplicación vuelve JSON responses
a sus clientes (es una API server
, de verdad).
De vez en cuando, los clientes obtienen respuestas de 0 bytes. Sin embargo, no soy yo quien los devuelve. Aquí hay un fragmento del registro de mi aplicación:
14 de marzo 13:13:31 d.0b1adf0a-0597-4f5c-8901-dfe7cda9bce0 app [web.1] [2013-03-14 13:13:31 UTC] 10.104.41.136 apisrv - api_get_credits_balance (): session_token = [MASKED ]
La primera línea de arriba es yo comenzando a manejar la solicitud.
14 de marzo 13:13:31 d.0b1adf0a-0597-4f5c-8901-dfe7cda9bce0 app [web.1] [2013-03-14 13:13:31 UTC] 10.104.41.136 apisrv 1252148511 api_get_credits_balance (): regresando [{' saldo_créditos ': 0}]
La segunda línea es yo devolviendo un valor (a Flask - es un objeto "Respuesta" de Flask).
14 de marzo 13:13:31 d.0b1adf0a-0597-4f5c-8901-dfe7cda9bce0 app [web.1] "10.104.41.136 - - [14 / Mar / 2013: 13: 13: 31]" POST / get_credits_balance? Session_token = HTTP ENMASCARADO / 1.1 "200 22" - "" Appcelerator Titanium / 3.0.0.GA (iPhone / 6.1.2; iPhone OS; en_US;) "
La tercera línea es la de Gnicorn, donde se puede ver que Gunicorn obtuvo el estado de 200 y el cuerpo HTTP de 22 bytes (" 200 22
").
Sin embargo, el cliente obtuvo 0 bytes. Aquí está el registro del enrutador Heroku:
14 de marzo 13:13:30 d.0b1adf0a-0597-4f5c-8901-dfe7cda9bce0 heroku [router] at = info method = POST path = / get_credits_balance? Session_token = MASKED host = matchspot-apisrv.herokuapp.com fwd = "66.87. 116.128 "dinamómetro = web.1 cola = 0 espera = 0 ms conexión = 1 ms servicio = 19 ms estado = 200 bytes = 0
¿Por qué Gunicorn devuelve 22 bytes, pero Heroku ve 0 y, de hecho, devuelve 0 bytes al cliente? ¿Es esto un error de Heroku?