Então eu passei muito tempo demais depuração por que minha sessão foram expirando rapidamente no servidor estágio do Poderoso Primavera que roda em Heroku. Eu finalmente cavei fundo o suficiente com o registro para descobrir que remote_addr
estava retornando um valor diferente a cada vez. Criei uma nova Request
classe que retorna o correto remote_addr
quando executado no Heroku.
from flask import Request
class HerokuRequest(Request):
"""
`Request` subclass that overrides `remote_addr` with Heroku's
HTTP_X_FORWARDED_FOR when available.
"""
@property
def remote_addr(self):
"""The remote address of the client."""
fwd = self.environ.get('HTTP_X_FORWARDED_FOR', None)
if fwd is None:
return self.environ.get('REMOTE_ADDR')
# sometimes x-forwarded-for contains multiple addresses,
# actual client is first, rest are proxy
fwd = fwd.split(',')[0]
return fwd
## use HerokuRequest class so we get real IPs
app.request_class = HerokuRequest