kinit/kinit-api/core/event.py
ktianc ff56a184ca 版本升级:
1. 修复(kinit-admin):页面缓存问题修复
2. 更新(kinit-api,kinit-admin):菜单管理新增是否缓存字段
3. 更新(kinit-admin):将缓存默认存储在localStorage中
4. 更新(kinit-api):将python-jose库更换为pyjwt库
5. 优化(kinit-admin,kinit-uni):退出登录方法优化
6. 优化(kinit-admin,kinit-uni):response拦截优化
7. 新增(kinit-api,kinit-admin,kinit-uni):jwt到期时间缩短,加入刷新token功能
8. (kinit-uni)切换到 vscode 开发 uniapp 项目
2023-03-13 14:34:26 +08:00

98 lines
4.0 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/usr/bin/python
# -*- coding: utf-8 -*-
# @version : 1.0
# @Creaet Time : 2022/3/21 11:03
# @File : event.py
# @IDE : PyCharm
# @desc : 全局事件
from fastapi import FastAPI
from aioredis import from_url
from application.settings import REDIS_DB_URL, MONGO_DB_URL, MONGO_DB_NAME
from core.mongo import db
from utils.cache import Cache
def register_redis(app: FastAPI) -> None:
"""
把 redis 挂载到 app 对象上面
博客https://blog.csdn.net/wgPython/article/details/107668521
博客https://www.cnblogs.com/emunshe/p/15761597.html
官网https://aioredis.readthedocs.io/en/latest/getting-started/
Github: https://github.com/aio-libs/aioredis-py
aioredis.from_url(url, *, encoding=None, parser=None, decode_responses=False, db=None, password=None, ssl=None,
connection_cls=None, loop=None, **kwargs) 方法是 aioredis 库中用于从 Redis 连接 URL 创建 Redis 连接对象的方法。
以下是该方法的参数说明:
urlRedis 连接 URL。例如 redis://localhost:6379/0。
encoding可选参数Redis 编码格式。默认为 utf-8。
parser可选参数Redis 数据解析器。默认为 None表示使用默认解析器。
decode_responses可选参数是否将 Redis 响应解码为 Python 字符串。默认为 False。
db可选参数Redis 数据库编号。默认为 None。
password可选参数Redis 认证密码。默认为 None表示无需认证。
ssl可选参数是否使用 SSL/TLS 加密连接。默认为 None。
connection_cls可选参数Redis 连接类。默认为 None表示使用默认连接类。
loop可选参数用于创建连接对象的事件循环。默认为 None表示使用默认事件循环。
**kwargs可选参数其他连接参数用于传递给 Redis 连接类的构造函数。
aioredis.from_url() 方法的主要作用是将 Redis 连接 URL 转换为 Redis 连接对象。
除了 URL 参数外,其他参数用于指定 Redis 连接的各种选项,例如 Redis 数据库编号、密码、SSL/TLS 加密等等。可以根据需要选择使用这些选项。
health_check_interval 是 aioredis.from_url() 方法中的一个可选参数,用于设置 Redis 连接的健康检查间隔时间。
健康检查是指在 Redis 连接池中使用的连接对象会定期向 Redis 服务器发送 PING 命令来检查连接是否仍然有效。
该参数的默认值是 0表示不进行健康检查。如果需要启用健康检查则可以将该参数设置为一个正整数表示检查间隔的秒数。
例如,如果需要每隔 5 秒对 Redis 连接进行一次健康检查,则可以将 health_check_interval 设置为 5
:param app:
:return:
"""
@app.on_event('startup')
async def startup_event():
"""
获取链接
:return:
"""
print("Connecting to Redis")
app.state.redis = from_url(REDIS_DB_URL, decode_responses=True, health_check_interval=1)
await Cache(app.state.redis).cache_tab_names()
@app.on_event('shutdown')
async def shutdown_event():
"""
关闭
:return:
"""
print("Redis connection closed")
await app.state.redis.close()
def register_mongo(app: FastAPI) -> None:
"""
把 mongo 挂载到 app 对象上面
博客https://www.cnblogs.com/aduner/p/13532504.html
mongodb 官网https://www.mongodb.com/docs/drivers/motor/
motor 文档https://motor.readthedocs.io/en/stable/
:param app:
:return:
"""
@app.on_event('startup')
async def startup_event():
"""
获取 mongodb 连接
:return:
"""
await db.connect_to_database(path=MONGO_DB_URL, db_name=MONGO_DB_NAME)
@app.on_event('shutdown')
async def shutdown_event():
"""
关闭
:return:
"""
await db.close_database_connection()