Я запускаю додаток Flask / Gunicorn Python на динозавірі Heroku Cedar. Додаток повертається JSON responses
до своїх клієнтів (це API server
, насправді).
Час від часу клієнти отримують 0-байтові відповіді. Однак я повертаю їх не я. Ось фрагмент журналу мого додатка:
14 березня 13:13:31 d.0b1adf0a-0597-4f5c-8901-dfe7cda9bce0 додаток [web.1] [2013-03-14 13:13:31 UTC] 10.104.41.136 apisrv - api_get_credits_balance (): session_token = [MASKED ]
Перший рядок вище - це я починаю обробляти запит.
14 березня 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 (): повернення [{' credits_balance ': 0}]
Другий рядок - це я повертаю значення (у Flask - це об’єкт Flask "Response").
14 березня 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 = MASKED HTTP / 1.1 "200 22" - "" Appcelerator Titanium / 3.0.0.GA (iPhone / 6.1.2; iPhone OS; en_US;) "
Третій рядок - Gnicorn, де ви можете бачити, як Gunicorn отримав статус 200 і 22 байта HTTP-тіла (" 200 22
").
Однак клієнт отримав 0 байт. Ось журнал маршрутизатора Heroku:
14 березня 13:13:30 d.0b1adf0a-0597-4f5c-8901-dfe7cda9bce0 heroku [маршрутизатор] at = info method = POST path = / get_credits_balance? Session_token = MASKED host = matchspot-apisrv.herokuapp.com fwd = "66.87. 116.128 "dyno = web.1 черга = 0 очікування = 0ms підключення = 1ms послуга = 19ms стан = 200 байт = 0
Чому Gunicorn повертає 22 байти, а Heroku бачить 0 і справді передає клієнту 0 байт? Це помилка Heroku?