fix(deploy): reduce backend worker footprint
This commit is contained in:
@@ -3,9 +3,6 @@ from __future__ import annotations
|
||||
import asyncio
|
||||
from typing import Any
|
||||
|
||||
import dashscope
|
||||
from dashscope.audio.asr import Recognition, RecognitionCallback
|
||||
|
||||
from core.config.settings import config
|
||||
from core.logging import get_logger
|
||||
|
||||
@@ -28,6 +25,9 @@ class AsrService:
|
||||
|
||||
async def transcribe_file(self, file_path: str, filename: str) -> str:
|
||||
try:
|
||||
import dashscope
|
||||
from dashscope.audio.asr import Recognition, RecognitionCallback
|
||||
|
||||
dashscope.api_key = self._get_api_key()
|
||||
|
||||
loop = asyncio.get_event_loop()
|
||||
|
||||
@@ -48,7 +48,7 @@ class TaskiqQueueClient:
|
||||
|
||||
@staticmethod
|
||||
def _select_queue_task(command: dict[str, object]) -> Any:
|
||||
from core.agentscope.runtime.tasks import (
|
||||
from core.agentscope.runtime.task_handles import (
|
||||
run_command_task_agent,
|
||||
run_command_task_general,
|
||||
)
|
||||
|
||||
@@ -5,15 +5,11 @@ from pathlib import Path
|
||||
|
||||
from sqlalchemy import select
|
||||
from structlog import get_logger
|
||||
from taskiq_redis import RedisScheduleSource
|
||||
|
||||
from core.config.settings import config
|
||||
from core.db.session import AsyncSessionLocal
|
||||
from core.email.sender import EmailAttachment, EmailMessage, EmailSender
|
||||
from core.email.template_loader import load_template
|
||||
from core.taskiq.app import worker_general_broker
|
||||
from core.taskiq.app import worker_agent_broker
|
||||
from models.user_feedback import UserFeedback
|
||||
from v1.feedback.report import generate_feedback_report
|
||||
|
||||
logger = get_logger("v1.feedback.tasks")
|
||||
|
||||
@@ -52,6 +48,8 @@ def _build_report_email_html(
|
||||
end_time: datetime,
|
||||
push_hour: int,
|
||||
) -> str:
|
||||
from core.email.template_loader import load_template
|
||||
|
||||
template = load_template("feedback", "daily_report.html")
|
||||
return template.substitute(
|
||||
start_date=start_time.strftime("%Y-%m-%d"),
|
||||
@@ -70,6 +68,8 @@ def _build_no_feedback_email_html(
|
||||
end_time: datetime,
|
||||
push_hour: int,
|
||||
) -> str:
|
||||
from core.email.template_loader import load_template
|
||||
|
||||
template = load_template("feedback", "no_feedback.html")
|
||||
return template.substitute(
|
||||
start_date=start_time.strftime("%Y-%m-%d"),
|
||||
@@ -87,6 +87,8 @@ async def _send_feedback_email(
|
||||
push_hour: int,
|
||||
report_path: Path | None = None,
|
||||
) -> bool:
|
||||
from core.email.sender import EmailAttachment, EmailMessage, EmailSender
|
||||
|
||||
sender = EmailSender()
|
||||
|
||||
if feedbacks:
|
||||
@@ -123,12 +125,14 @@ async def _send_feedback_email(
|
||||
|
||||
|
||||
# type: ignore reportArgumentType for taskiq decorator
|
||||
@worker_general_broker.on_event("startup") # pyright: ignore[reportArgumentType]
|
||||
@worker_agent_broker.on_event("startup") # pyright: ignore[reportArgumentType]
|
||||
async def _register_feedback_report_schedule() -> None:
|
||||
if not config.feedback_report.enabled:
|
||||
logger.info("Feedback report scheduling disabled")
|
||||
return
|
||||
|
||||
from taskiq_redis import RedisScheduleSource
|
||||
|
||||
schedule_source = RedisScheduleSource(
|
||||
url=config.taskiq_broker_url,
|
||||
prefix="schedule:feedback",
|
||||
@@ -146,12 +150,14 @@ async def _register_feedback_report_schedule() -> None:
|
||||
)
|
||||
|
||||
|
||||
@worker_general_broker.task(task_name="tasks.feedback.generate_daily_report")
|
||||
@worker_agent_broker.task(task_name="tasks.feedback.generate_daily_report")
|
||||
async def generate_daily_feedback_report() -> str | None:
|
||||
if not config.feedback_report.enabled:
|
||||
logger.info("Feedback report is disabled, skipping")
|
||||
return None
|
||||
|
||||
from v1.feedback.report import generate_feedback_report
|
||||
|
||||
now = datetime.now(timezone.utc)
|
||||
push_hour = 10
|
||||
end_time = now.replace(hour=push_hour, minute=0, second=0, microsecond=0)
|
||||
@@ -192,6 +198,8 @@ async def generate_daily_feedback_report() -> str | None:
|
||||
|
||||
|
||||
async def generate_all_feedback_report() -> Path:
|
||||
from v1.feedback.report import generate_feedback_report
|
||||
|
||||
async with AsyncSessionLocal() as session:
|
||||
stmt = select(UserFeedback).order_by(UserFeedback.created_at.desc())
|
||||
result = await session.execute(stmt)
|
||||
|
||||
Reference in New Issue
Block a user