70 lines
2.4 KiB
Python
70 lines
2.4 KiB
Python
"""
|
|
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={
|
|
"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}")
|