flask 引入redis 替換原生session儲存session(flask-session)
阿新 • • 發佈:2021-01-03
環境:
python 3.7.4
win 10 環境
redis 服務
模組依賴:
flask
flask-session
redis
工程目錄:
flask 引入redis 替換原生session儲存session(flask-session)
在配置檔案中加入redis連線配置以及flask-session 替換為 redis方式
import uuid, os from redis import Redis class BasicConfig(object): # SECRET_KEY = os.urandom(24) SECRET_KEY = str(uuid.uuid4()) class DevConfig(BasicConfig): DEBUG = True # Mysql 配置 SQLALCHEMY_DATABASE_URI = 'mysql+pymysql://root:[email protected]/anec' SQLALCHEMY_TRACK_MODIFICATIONS = 'False' SQLALCHEMY_POOL_SIZE = 5 SQLALCHEMY_POOL_TIMEOUT = 15 # redis 與 flask-session 配置 SESSION_TYPE = 'redis' # session儲存格式為redis SESSION_REDIS = Redis(host='192.168.0.118', port=6379) SESSION_USE_SIGNER = True # 是否強制加鹽,混淆session SESSION_PERMANENT = False # sessons是否長期有效,false,則關閉瀏覽器,session失效 PERMANENT_SESSION_LIFETIME = 3600 # session長期有效,則設定session生命週期,整數秒,預設大概不到3小時。
在views 中使用 session
from App.RedisSession import redissession from flask import session, request @redissession.route('/') def default(): return session.get('key', 'not set') @redissession.route('/test/') def test(): session['key'] = 'test' return 'ok' @redissession.route('/set/') def set(): # 從請求頭中獲取 新的Key值 arg = request.args.get('key') print(arg) session['key'] = arg return 'ok' @redissession.route('/get/') def get(): return session.get('key', 'not set') @redissession.route('/pop/') def pop(): session.pop('key') return session.get('key', 'not set') @redissession.route('/clear/') def clear(): session.clear() return session.get('key', 'not set')