Я запускаю приложение Flask/Gunicorn Python на сироте кедра Heroku. Приложение возвращает JSON responses
своим клиентам (это действительно API server
).
Время от времени клиенты получают 0-байтные ответы. Однако я не возвращаю их. Вот фрагмент моего журнала приложений:
Mar 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 - api_get_credits_balance(): session_token = [MASKED]
В первой строке выше я начинаю обрабатывать запрос.
Mar 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(): return [{'credits_balance': 0}]
Во второй строке я возвращаю значение (в Flask - это объект "Отклик" "Колба" ).
Mar 14 13:13:31 d.0b1adf0a-0597-4f5c-8901-dfe7cda9bce0 app [web.1] "10.104.41.136 - - [14/Март/2013: 13: 13: 31]" ПОЧТА /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's, где вы можете увидеть, что Gunicorn получил статус 200 и 22 байта HTTP-тела ( "200 22
" ).
Однако клиент получил 0 байт. Вот журнал маршрутизатора Heroku:
Mar 14 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" dyno = web.1 queue = 0 wait = 0ms connect = 1ms service = 19ms status = 200 bytes = 0
Почему Gunicorn возвращает 22 байта, но Heroku видит 0 и действительно передает обратно 0 байтам клиенту? Является ли это ошибкой Heroku?