perf(db): conexión SQLite compartida por proceso
Build & Deploy ResearchOwl / build-and-push (push) Successful in 5s
Build & Deploy ResearchOwl / build-and-push (push) Successful in 5s
get_db() devuelve un proxy sobre una única conexión real reutilizada durante toda la vida del proceso, en vez de abrir una conexión nueva y re-ejecutar todo el SCHEMA en cada comando/scoring. - _SharedConnection: proxy con close() no-op → los handlers conservan el patrón get_db()/finally close() sin cambios - aiosqlite serializa las operaciones en el hilo de la conexión: compartirla entre coroutines es seguro y elimina la contención del lock de escritura a nivel de fichero (scheduler solapado, /compare con 2 sesiones) - close_db() vía post_shutdown para checkpoint WAL limpio al apagar Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.8
parent
2ffad8aad3
commit
cd557a2d71
+6
-1
@@ -18,7 +18,7 @@ from telegram.ext import (
|
||||
from telegram.constants import ParseMode
|
||||
|
||||
from src.config import settings
|
||||
from src.db.database import get_db, ResearchDB, ResearchStatus, OutputType
|
||||
from src.db.database import get_db, close_db, ResearchDB, ResearchStatus, OutputType
|
||||
from src.scraper.exhaustive import ExhaustiveScraper
|
||||
from src.processor.processor import OllamaClient, ContentProcessor
|
||||
from src.generator.generator import OutputGenerator
|
||||
@@ -913,6 +913,10 @@ async def _on_startup(app: Application) -> None:
|
||||
await _start_scheduler(app)
|
||||
|
||||
|
||||
async def _on_shutdown(app: Application) -> None:
|
||||
await close_db()
|
||||
|
||||
|
||||
async def cmd_export(update: Update, ctx: ContextTypes.DEFAULT_TYPE):
|
||||
if not is_authorized(update.effective_user.id):
|
||||
return
|
||||
@@ -1259,6 +1263,7 @@ def create_bot() -> Application:
|
||||
Application.builder()
|
||||
.token(settings.telegram_bot_token)
|
||||
.post_init(_on_startup)
|
||||
.post_shutdown(_on_shutdown)
|
||||
.build()
|
||||
)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user