随着flask / heroku

时间:2015-05-21 10:01:23

标签: python session heroku flask gunicorn

我在Heroku上的应用程序出现问题,因为会话不会持续存在。具体来说,每次发出请求时,flask的SecureCookieSession对象都是空的。将此与在localhost上运行我的应用程序进行对比,其中SecureCookieSession的内容以其应有的方式持续存在。

我也使用flask-login + flask-seasurf,但我很确定问题发生在flask / gunicorn / heroku之间。

以下是描述类似问题的三个问题:

  1. Flask sessions not persisting on heroku
  2. Flask session not persisting
  3. Flask-Login and Heroku issues
  4. 除了我不在这里处理AJAX或多个工作人员(它是一个单独的heroku免费dyno,在Procfile中只有一行)。我确实感觉使用server side sessions with redis或从Heroku切换到类似EC2的东西可能会解决我的问题。

    此外,如果有帮助https://gitlab.com/collectqt/quirell/tree/develop,请点击我的git回购。我用

    测试会话内容
    def _before_request(self):
        LOG.debug('SESSION REQUEST '+str(flask.session))
    
    def _after_request(self, response):
        LOG.debug('SESSION RESPONSE '+str(flask.session))
        return response
    

2 个答案:

答案 0 :(得分:2)

通过一些外部帮助解决了,主要是通过更改密钥来使用我想出的随机字符串,而不是os.urandom(24)

如果仅通过简化测试

,更改为服务器端redis会话也会有所帮助

答案 1 :(得分:1)

如果其他人遇到此问题,请检查APPLICATION_ROOT配置变量。我最近使用反向代理将Flask应用程序部署到nginx下的子目录中,并将{{1}}变量设置为破坏了Flask的会话。因此,Cookies没有被设置在正确的路径下。