我在 Heroku Cedar dyno 上运行Flask/Gunicorn Python 应用程序。该应用程序返回JSON responses
给它的客户(它是一个API server
,真的)。
有时客户端会收到 0 字节的响应。然而,不是我归还它们。这是我的应用程序日志的片段:
3 月 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 ]
上面的第一行是我开始处理请求。
3 月 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“响应”对象)。
3 月 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=屏蔽 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 路由器日志:
3 月 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 队列=0 等待=0ms 连接=1ms 服务=19ms 状态=200 字节=0
为什么 Gunicorn 返回 22 个字节,但 Heroku 看到 0,并且确实将 0 个字节传回给客户端?这是 Heroku 的错误吗?