Flask redis服务器会话:save_session出错

Raj*_*Raj 4 session redis flask docker-compose

伙计们:我正在使用redis移动我的Flask应用程序,以便将会话存储到docker容器中.当redis在本地运行时,我的应用程序运行愉快.但是,当使用redis图像运行docker-compose时,我看到以下错误.无论我的redis容器是在运行还是停止,我都会收到相同的错误:

2017-04-02 03:36:09,861] ERROR in app: Exception on / [GET]
web_1    | Traceback (most recent call last):
web_1    |   File "/usr/local/lib/python2.7/site-packages/flask/app.py", line 1988, in wsgi_app
web_1    |     response = self.full_dispatch_request()
web_1    |   File "/usr/local/lib/python2.7/site-packages/flask/app.py", line 1643, in full_dispatch_request
web_1    |     response = self.process_response(response)
web_1    |   File "/usr/local/lib/python2.7/site-packages/flask/app.py", line 1864, in process_response
web_1    |     self.save_session(ctx.session, response)
web_1    |   File "/usr/local/lib/python2.7/site-packages/flask/app.py", line 926, in save_session
web_1    |     return self.session_interface.save_session(self, session, response)
web_1    |   File "/usr/local/lib/python2.7/site-packages/flask_session/sessions.py", line 165, in save_session
web_1    |     self.redis.setex(name=self.key_prefix + session.sid, value=val,
web_1    | AttributeError: 'str' object has no attribute 'setex'
Run Code Online (Sandbox Code Playgroud)

我已将以下配置属性添加到我的应用程序以进行会话配置:

SESSION_TYPE = "redis"
SESSION_REDIS = "redis:6379"
Run Code Online (Sandbox Code Playgroud)

我不认为这是一个docker-compose问题,因为我的应用程序能够成功连接到MySQL实例,仍然,这里是我的docker-compose.yml文件,以防它指向某事:

version: "3"
services:
  mysql:
    build:
      context: db/
  web:
    build:
      context: web/
    ports:
    - "10080:80"
    depends_on:
    - "mysql"
    - "redis"
  redis:
    image: "redis:alpine"
Run Code Online (Sandbox Code Playgroud)

Raj*_*Raj 6

弄清楚了.问题出在会话配置中.我不得不改变

SESSION_REDIS = "redis:6379"
Run Code Online (Sandbox Code Playgroud)

SESSION_REDIS = redis.Redis("redis")
Run Code Online (Sandbox Code Playgroud)

  • 我现在遇到了这个问题,您需要明确通知默认主机和服务器才能解决“问题” - `'SESSION_REDIS': redis.Redis(host='localhost', port=6379),`。 (2认同)