增加停止服务开关

This commit is contained in:
mark.tian
2025-12-08 13:03:02 +08:00
parent 4b0ab3260a
commit a55c321fce
2 changed files with 113 additions and 16 deletions

View File

@@ -1,7 +1,7 @@
"""
Celery任务定义
"""
from celery import current_task
from sqlalchemy import create_engine
import json
from app.celery_app import celery_app
@@ -26,7 +26,7 @@ engine = create_engine(
)
@celery_app.task(bind=True, name='push_data_to_dtc')
def push_data_to_dtc_task():
def push_data_to_dtc_task(self):
"""
推送数据给DTC的Celery任务
自动获取一条未完成的回调请求进行处理
@@ -48,7 +48,7 @@ def push_data_to_dtc_task():
try:
with engine.connect() as conn:
# 更新任务状态
current_task.update_state(
self.update_state(
state='PROGRESS',
meta={'current': 0, 'total': 100, 'status': f'正在获取下一条回调请求日志...'}
)
@@ -70,7 +70,7 @@ def push_data_to_dtc_task():
logger.info(f"📋 获取到未完成的回调请求: ID={callback_log_id}, site_id={site_id}")
# 更新任务状态
current_task.update_state(
self.update_state(
state='PROGRESS',
meta={'current': 25, 'total': 100, 'status': f'获取回调请求成功(ID={callback_log_id}, site_id={site_id}),开始分析处理...'}
)
@@ -88,7 +88,7 @@ def push_data_to_dtc_task():
raise Exception(f"保存callback_data:{callback_log_id}失败,任务停止执行")
# 更新任务状态
current_task.update_state(
self.update_state(
state='PROGRESS',
meta={'current': 50, 'total': 100, 'status': f'请求体中通话明细处理成功(ID={callback_log_id}, site_id={site_id}),开始过滤需要转发的通话记录...'}
)
@@ -140,7 +140,7 @@ def push_data_to_dtc_task():
return {"status": "completed", "message": "没有有效的通过记录需要处理"}
# 更新任务状态
current_task.update_state(
self.update_state(
state='PROGRESS',
meta={'current': 70, 'total': 100, 'status': f'需要推送的通过记录已获取成功(ID={callback_log_id}, site_id={site_id}),准备转发...'}
)
@@ -151,9 +151,9 @@ def push_data_to_dtc_task():
filtered_request_body['data'] = related_records
# 更新任务状态
current_task.update_state(
self.update_state(
state='PROGRESS',
meta={'current': 85, 'total': 100, 'status': '开始推送数据给DTC(ID={callback_log_id}, site_id={site_id})...'}
meta={'current': 85, 'total': 100, 'status': f'开始推送数据给DTC(ID={callback_log_id}, site_id={site_id})...'}
)
success, retry_count = call_external_api_with_retry(
@@ -177,9 +177,9 @@ def push_data_to_dtc_task():
mark_callback_log_completed(conn, callback_log_id)
# 更新任务状态
current_task.update_state(
self.update_state(
state='PROGRESS',
meta={'current': 100, 'total': 100, 'status': '标记回调请求日志为已完成(ID={callback_log_id}, site_id={site_id})'}
meta={'current': 100, 'total': 100, 'status': f'标记回调请求日志为已完成(ID={callback_log_id}, site_id={site_id})'}
)
return {