Files
ai-talk-callback/app/celery_app.py
2025-12-13 09:22:19 +08:00

76 lines
2.5 KiB
Python
Raw 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.
"""
Celery应用配置
"""
from celery import Celery
from celery.schedules import crontab
from app.config import settings
from app.logger import (
get_celery_logger,
get_celery_beat_logger,
get_celery_worker_logger,
LoggerManager,
)
# 确保日志系统初始化
LoggerManager.setup_logging()
logger = get_celery_logger()
beat_logger = get_celery_beat_logger()
worker_logger = get_celery_worker_logger()
# 创建Celery应用实例
celery_app = Celery(
"ai_talk_callback",
broker=settings.celery_broker_url,
backend=settings.celery_result_backend,
include=["app.celery_tasks"],
)
# Celery配置
celery_app.conf.update(
task_serializer=settings.celery_task_serializer,
result_serializer=settings.celery_result_serializer,
accept_content=settings.celery_accept_content,
timezone=settings.celery_timezone,
enable_utc=settings.celery_enable_utc,
task_track_started=True,
task_time_limit=30 * 60, # 30分钟超时
task_soft_time_limit=25 * 60, # 25分钟软超时
worker_prefetch_multiplier=1,
worker_max_tasks_per_child=1000,
# Worker日志配置
worker_log_format="[%(asctime)s: %(levelname)s/%(processName)s] %(message)s",
worker_task_log_format="[%(asctime)s: %(levelname)s/%(processName)s][%(task_name)s(%(task_id)s)] %(message)s",
# Beat 调度配置
# crontab(hour=9, minute=0) # 每天上午9点执行
beat_schedule={
"""
'push-data-to-dtc-every-minute': {
'task': 'push_data_to_dtc',
'schedule': 120.0, # 每120秒执行一次(2分钟)
},
"""
"daily-morning-task": {
"task": "call_api",
"schedule": crontab(hour=9, minute=0), # 每天上午9点执行
},
},
)
logger.info("🌿 Celery应用配置完成")
beat_logger.info("📅 Celery Beat 调度器配置完成")
beat_logger.info("📋 定时任务列表:")
for task_name, task_config in celery_app.conf.beat_schedule.items():
beat_logger.info(f" - {task_name}: {task_config['schedule']}秒")
# Worker 配置日志
worker_logger.info("🔧 Celery Worker 配置完成")
worker_logger.info("⚙️ Worker 配置参数:")
worker_logger.info(f" - 任务超时: {celery_app.conf.task_time_limit}秒")
worker_logger.info(f" - 软超时: {celery_app.conf.task_soft_time_limit}秒")
worker_logger.info(f" - 预取倍数: {celery_app.conf.worker_prefetch_multiplier}")
worker_logger.info(
f" - 每个子进程最大任务数: {celery_app.conf.worker_max_tasks_per_child}"
)
worker_logger.info(f" - 包含模块: {celery_app.conf.include}")