fix: auto-start all 10 worker loops on app startup
This commit is contained in:
@@ -27,7 +27,16 @@ from .db import fetch_int_setting, fetch_setting, get_pool
|
||||
from .security import hash_password, new_token, token_hash, verify_password
|
||||
from .text_utils import build_publication_text, normalize_hash_tag, parse_categories
|
||||
from .vk_api import VKAPIClient, normalize_vk_source
|
||||
from .workers.ai_qualifier import normalize_model, response_usage
|
||||
from .workers.ai_qualifier import AIQualifierWorker, normalize_model, response_usage
|
||||
from .workers.ai_writer import AIWriterWorker
|
||||
from .workers.daily_report import DailyReportWorker
|
||||
from .workers.max_poster import MAXPoster
|
||||
from .workers.parser import VKParserWorker
|
||||
from .workers.site_poster import SitePoster
|
||||
from .workers.tg_poster import TelegramPoster
|
||||
from .workers.tg_reactor import TelegramReactor
|
||||
from .workers.vk_poster import VKPoster
|
||||
from .workers.vk_storage_uploader import TelegramStorageUploader
|
||||
|
||||
COOKIE_NAME = "vk_parser_admin"
|
||||
VK_OAUTH_VERIFIER_COOKIE = "vk_oauth_verifier"
|
||||
@@ -1652,10 +1661,32 @@ def prepare_audit_row(row: Any) -> dict[str, Any]:
|
||||
return item
|
||||
|
||||
|
||||
async def start_worker_task(worker: Any, name: str) -> None:
|
||||
try:
|
||||
logger.info("Starting background worker task: {}", name)
|
||||
await worker.run_loop()
|
||||
except Exception as exc:
|
||||
logger.exception("Background worker task {} stopped unexpectedly: {}", name, exc)
|
||||
|
||||
|
||||
@app.on_event("startup")
|
||||
async def startup() -> None:
|
||||
await bootstrap_admin()
|
||||
await prune_audit_log()
|
||||
workers = [
|
||||
("ai-qualifier", AIQualifierWorker()),
|
||||
("ai-writer", AIWriterWorker()),
|
||||
("daily-report", DailyReportWorker()),
|
||||
("max-poster", MAXPoster()),
|
||||
("vk-parser", VKParserWorker()),
|
||||
("site-poster", SitePoster()),
|
||||
("tg-poster", TelegramPoster()),
|
||||
("tg-reactor", TelegramReactor()),
|
||||
("vk-poster", VKPoster()),
|
||||
("vk-storage-uploader", TelegramStorageUploader()),
|
||||
]
|
||||
for name, worker in workers:
|
||||
asyncio.create_task(start_worker_task(worker, name))
|
||||
|
||||
|
||||
@app.get("/health")
|
||||
|
||||
Reference in New Issue
Block a user