fix 调整数据库会话 #330

This commit is contained in:
jxxghp 2023-09-02 08:18:01 +08:00
parent ec8c9c996a
commit 374e633ca7
5 changed files with 18 additions and 16 deletions

View File

@ -13,7 +13,7 @@ from app.chain.transfer import TransferChain
from app.core.event import Event as ManagerEvent
from app.core.event import eventmanager, EventManager
from app.core.plugin import PluginManager
from app.db import GlobalDB
from app.db import ScopedSession
from app.log import logger
from app.schemas.types import EventType, MessageChannel
from app.utils.object import ObjectUtils
@ -41,7 +41,7 @@ class Command(metaclass=Singleton):
def __init__(self):
# 数据库连接
self._db = GlobalDB
self._db = ScopedSession()
# 事件管理器
self.eventmanager = EventManager()
# 插件管理器

View File

@ -1,5 +1,5 @@
from sqlalchemy import create_engine, QueuePool
from sqlalchemy.orm import sessionmaker, Session
from sqlalchemy.orm import sessionmaker, Session, scoped_session
from app.core.config import settings
@ -11,11 +11,11 @@ Engine = create_engine(f"sqlite:///{settings.CONFIG_PATH}/user.db",
pool_size=1000,
pool_recycle=60 * 10,
max_overflow=0)
# 数据库会话
SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=Engine)
# 会话工厂
SessionFactory = sessionmaker(autocommit=False, autoflush=False, bind=Engine)
# 全局使用的数据库会话
GlobalDB = SessionLocal()
# 多线程全局使用的数据库会话
ScopedSession = scoped_session(SessionFactory)
def get_db():
@ -25,7 +25,7 @@ def get_db():
"""
db = None
try:
db = SessionLocal()
db = SessionFactory()
yield db
finally:
if db:
@ -40,7 +40,7 @@ class DbOper:
if db:
self._db = db
else:
self._db = GlobalDB
self._db = ScopedSession()
def __del__(self):
if self._db:

View File

@ -6,7 +6,7 @@ from alembic.config import Config
from app.core.config import settings
from app.core.security import get_password_hash
from app.db import Engine, GlobalDB
from app.db import Engine, ScopedSession
from app.db.models import Base
from app.db.models.user import User
from app.log import logger
@ -22,14 +22,16 @@ def init_db():
# 全量建表
Base.metadata.create_all(bind=Engine)
# 初始化超级管理员
user = User.get_by_name(db=GlobalDB, name=settings.SUPERUSER)
db = ScopedSession()
user = User.get_by_name(db=db, name=settings.SUPERUSER)
if not user:
user = User(
name=settings.SUPERUSER,
hashed_password=get_password_hash(settings.SUPERUSER_PASSWORD),
is_superuser=True,
)
user.create(GlobalDB)
user.create(db)
db.close()
def update_db():

View File

@ -5,7 +5,7 @@ from typing import Any, List, Dict, Tuple
from app.chain import ChainBase
from app.core.config import settings
from app.core.event import EventManager
from app.db import GlobalDB
from app.db import ScopedSession
from app.db.models import Base
from app.db.plugindata_oper import PluginDataOper
from app.db.systemconfig_oper import SystemConfigOper
@ -37,7 +37,7 @@ class _PluginBase(metaclass=ABCMeta):
def __init__(self):
# 数据库连接
self.db = GlobalDB
self.db = ScopedSession()
# 插件数据
self.plugindata = PluginDataOper(self.db)
# 处理链

View File

@ -12,7 +12,7 @@ from app.chain.rss import RssChain
from app.chain.subscribe import SubscribeChain
from app.chain.transfer import TransferChain
from app.core.config import settings
from app.db import GlobalDB
from app.db import ScopedSession
from app.log import logger
from app.utils.singleton import Singleton
from app.utils.timer import TimerUtils
@ -40,7 +40,7 @@ class Scheduler(metaclass=Singleton):
def __init__(self):
# 数据库连接
self._db = GlobalDB
self._db = ScopedSession()
# 调试模式不启动定时服务
if settings.DEV:
return