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 .security import hash_password, new_token, token_hash, verify_password
|
||||||
from .text_utils import build_publication_text, normalize_hash_tag, parse_categories
|
from .text_utils import build_publication_text, normalize_hash_tag, parse_categories
|
||||||
from .vk_api import VKAPIClient, normalize_vk_source
|
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"
|
COOKIE_NAME = "vk_parser_admin"
|
||||||
VK_OAUTH_VERIFIER_COOKIE = "vk_oauth_verifier"
|
VK_OAUTH_VERIFIER_COOKIE = "vk_oauth_verifier"
|
||||||
@@ -1652,10 +1661,32 @@ def prepare_audit_row(row: Any) -> dict[str, Any]:
|
|||||||
return item
|
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")
|
@app.on_event("startup")
|
||||||
async def startup() -> None:
|
async def startup() -> None:
|
||||||
await bootstrap_admin()
|
await bootstrap_admin()
|
||||||
await prune_audit_log()
|
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")
|
@app.get("/health")
|
||||||
|
|||||||
Reference in New Issue
Block a user