Flask-Session Redis连接到AWS上的错误主机?

时间:2017-11-04 08:47:25

标签: amazon-web-services flask redis

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

从我的EC2实例到达我的ElastiCache redis实例
$ redis-cli -h xxx.xxxxxx.xxxx.xxxxx.cache.amazonaws.com ping
PONG

不确定我收到此错误的原因。

1 个答案:

答案 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的更多信息,了解可以设置这些配置选项的所有不同方法。