from flask import Flask, session
from flask_session import Session
from redis import Redis
app = Flask(__name__)
SESSION_TYPE='redis'
SESSION_REDIS = Redis(host='xxx.xxxxx.xxxx.xxxx.cache.amazonaws.com', port=6379, db=0)
Session(app)
这在localhost上运行时工作正常,但在AWS上我每次尝试加载页面时都会得到以下内容:
ConnectionError: Error 111 connecting to localhost:6379. Connection refused.
localhost
位没有任何意义。添加print SESSION_REDIS
会产生:
Redis<ConnectionPool<Connection<host=xxx.xxxxxx.xxxx.xxxxx.cache.amazonaws.com,port=6379,db=0>>>
我可以通过redis-cli
$ redis-cli -h xxx.xxxxxx.xxxx.xxxxx.cache.amazonaws.com ping
PONG
不确定我收到此错误的原因。
答案 0 :(得分:0)
您实际上并未将任何配置应用于Flask,而只是设置变量。为了将设置应用于flask(和任何扩展名),您需要在应用程序的配置对象中设置值(基本上只是dict
)。
您可以直接在Flask.config
对象中设置值
app = Flask(__name__)
app.config['SESSION_TYPE'] = 'redis'
app.config['SESSION_REDIS'] = Redis(host='xxx.xxxxx.xxxx.xxxx.cache.amazonaws.com', port=6379, db=0)
Session(app)
或者,如果要使用此文件中定义的变量,可以执行以下操作:
app = Flask(__name__)
SESSION_TYPE='redis'
SESSION_REDIS = Redis(host='xxx.xxxxx.xxxx.xxxx.cache.amazonaws.com', port=6379, db=0)
app.config.from_object(__name__)
Session(app)
查看有关configuring Flask的更多信息,了解可以设置这些配置选项的所有不同方法。