Files
zsglpt/services/task_batches.py

71 lines
2.4 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
from __future__ import annotations
import database
import email_service
from services.runtime import get_logger
from services.state import safe_batch_append_result
def _get_batch_id_from_source(source: str):
"""从source中提取批次IDsource格式: user_scheduled:batch_xxx"""
if not source:
return None
if source.startswith("user_scheduled:batch_"):
return source.split(":", 1)[1]
return None
def _send_batch_task_email_if_configured(batch_info: dict):
"""批次任务:当所有账号完成后发送打包邮件(在锁外调用)。"""
logger = get_logger()
try:
batch_user_id = batch_info.get("user_id")
if not batch_user_id:
return
user_info = database.get_user_by_id(batch_user_id)
if not user_info or not user_info.get("email"):
return
if not database.get_user_email_notify(batch_user_id):
return
if not batch_info.get("screenshots"):
return
email_service.send_batch_task_complete_email_async(
user_id=batch_user_id,
email=user_info["email"],
username=user_info["username"],
schedule_name=batch_info.get("schedule_name", "未命名任务"),
browse_type=batch_info.get("browse_type", "应读"),
screenshots=batch_info["screenshots"],
)
logger.info(f"[批次邮件] 已发送打包邮件,包含 {len(batch_info['screenshots'])} 条记录")
except Exception as e:
logger.warning(f"[批次邮件] 发送失败: {e}")
def _batch_task_record_result(
batch_id: str,
account_name: str,
screenshot_path: str,
total_items: int,
total_attachments: int,
):
"""批次任务:记录单账号结果,达到完成条件时触发邮件并回收内存。"""
logger = get_logger()
batch_info = safe_batch_append_result(
batch_id,
{
"account_name": account_name,
"path": screenshot_path,
"items": total_items,
"attachments": total_attachments,
},
)
if batch_info:
logger.info(
f"[批次邮件] 批次 {batch_id} 已完成: {batch_info.get('completed')}/{batch_info.get('total_accounts')},准备发送邮件"
)
_send_batch_task_email_if_configured(batch_info)