2017-11-04 5 views
0
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) 

ローカルホスト上で実行しているとき、これはうまく動作しますが、AWS上で、私は私がしようとするとページをロードするたびに、次の取得:Flask-Sessionは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 

わからない介して、私のEC2インスタンスからの私のElastiCacheのRedisのインスタンスに到達することができます。

答えて

0

実際にFlaskに設定を適用しているわけではなく、変数を設定するだけです。フラスコ(および任意の拡張機能)に設定を適用するには、アプリケーションのコンフィグレーションオブジェクトの値を設定する必要があります(基本的にはdict)。あなたはこのファイルで定義した変数を使用したい場合は、直接

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) 

代わりに、あなたは

あなたはFlask.configオブジェクト内の値を設定することができますいずれかを行うことができます

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の詳細を参照してください。

+0

ありがとう。実際のコードでは、 'from_pyfile'がロードされたcfgファイルにすべての設定があります。私の 'SESSION_REDIS'接続文字列を除くすべて。なぜ、デフォルトのローカルホスト接続を使用していたのかが分かりました。 – thedarklord47

関連する問題