feat(公开内容): 添加临时留言功能,留言保留10分钟,显示用户名、内容、时间和来源IP
This commit is contained in:
@@ -621,3 +621,49 @@ def cleanup_expired_temp_files(self):
|
||||
'error': error_msg,
|
||||
'timestamp': timezone.now().isoformat()
|
||||
}
|
||||
|
||||
|
||||
@shared_task(bind=True)
|
||||
def cleanup_expired_messages(self):
|
||||
"""
|
||||
清理过期的临时留言
|
||||
每5分钟执行一次,删除已过期的留言
|
||||
"""
|
||||
task_id = self.request.id if hasattr(self, 'request') else 'unknown'
|
||||
logger.info(f"[任务 {task_id}] 开始执行清理过期留言任务")
|
||||
|
||||
try:
|
||||
from core.models import TempMessage
|
||||
|
||||
expired_messages = TempMessage.objects.filter(expire_at__lte=timezone.now())
|
||||
|
||||
deleted_count = 0
|
||||
for message in expired_messages:
|
||||
try:
|
||||
msg_content = message.content[:20]
|
||||
message.delete()
|
||||
deleted_count += 1
|
||||
logger.info(f"[任务 {task_id}] 已删除过期留言: {msg_content}...")
|
||||
|
||||
except Exception as e:
|
||||
logger.error(f"[任务 {task_id}] 删除留言失败: {str(e)}")
|
||||
|
||||
logger.success(f"[任务 {task_id}] 清理完成,共删除 {deleted_count} 条过期留言")
|
||||
return {
|
||||
'status': 'success',
|
||||
'task_id': task_id,
|
||||
'deleted_count': deleted_count,
|
||||
'timestamp': timezone.now().isoformat()
|
||||
}
|
||||
|
||||
except Exception as e:
|
||||
error_msg = str(e)
|
||||
error_traceback = traceback.format_exc()
|
||||
logger.error(f"[任务 {task_id}] 清理过期留言失败: {error_msg}")
|
||||
logger.error(f"[任务 {task_id}] 错误详情:\n{error_traceback}")
|
||||
return {
|
||||
'status': 'failed',
|
||||
'task_id': task_id,
|
||||
'error': error_msg,
|
||||
'timestamp': timezone.now().isoformat()
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user