import aioredis from quart import Quart,session,redirect, url_for from quart_session import Session from quart_cors import cors from pymemcache.client import base from .main import main from .API import api from functools import wraps from myutils.ConfigManager import myCongif # from quart_sqlalchemy import SQLAlchemy # from flask_migrate import Migrate #app.config['SECRET_KEY'] = 'mysecret' #密钥 --需要放配置文件 #socketio = SocketIO(app) # Create the custom backend for quart-session class MemcachedSessionInterface: #只是能用,不明所以 def __init__(self, client): self.client = client async def open_session(self, app, request): sid = request.cookies.get(app.session_cookie_name) if not sid: sid = self._generate_sid() val = await self.client.get(self.key_prefix + sid) if val is not None: return self._deserialize(val) return self._get_default_session() async def save_session(self, app, session, response): val = self._serialize(session) await self.client.set(self.key_prefix + session.sid, val, self.expire) def create_app(): app = Quart(__name__) app.config['SECRET_KEY'] = 'zfxxkj_2024_!@#' app.config["TEMPLATES_AUTO_RELOAD"] = True #动态加载模板文件 #app.config['SESSION_FILE_DIR'] = './sessions' # session保存路径 #app.config['SESSION_MEMCACHED'] = base.Client(('localhost', 11211)) app.config['SESSION_PERMANENT'] = True # 如果设置为True,则关闭浏览器session就失效。 app.config['SESSION_USE_SIGNER'] = False # 是否对发送到浏览器上session的cookie值进行加密 app.config['SESSION_TYPE'] = 'redis' # session类型 redis_client = aioredis.from_url('redis://localhost:6379', encoding="utf-8",decode_responses=True) app.config['SESSION_REDIS'] = redis_client Session(app) # 同时把一个全局 redis 客户端挂到 app app.redis = redis_client # 注册main app.register_blueprint(main) #注册API模块 app.register_blueprint(api,url_prefix = '/api') return app