2025.10.17故事生成系统(系统优化与部署)
第7天:系统优化与部署
📋 第7天概述
进行系统性能优化,完善错误处理机制,并完成项目部署准备。
🎯 第7天目标
主要任务:系统优化、错误处理完善、部署配置
核心需求:性能提升、稳定性增强、部署就绪
🔧 核心优化代码
1. 异步任务处理优化
import asyncio
from concurrent.futures import ThreadPoolExecutor
class AsyncTaskManager:
def __init__(self, max_workers=3):
self.executor = ThreadPoolExecutor(max_workers=max_workers)
async def generate_story_async(self, prompt):
"""异步故事生成"""
loop = asyncio.get_event_loop()
return await loop.run_in_executor(
self.executor,
self._sync_generate_story, prompt
)
def _sync_generate_story(self, prompt):
"""同步故事生成方法"""
return story_service.generate_story(prompt)
2. 缓存机制实现
import time
from functools import wraps
class CacheManager:
def __init__(self, ttl=3600): # 1小时缓存
self.cache = {}
self.ttl = ttl
def cached(self, func):
@wraps(func)
def wrapper(*args, **kwargs):
key = f"{func.__name__}:{str(args)}:{str(kwargs)}"
if key in self.cache:
cached_time, result = self.cache[key]
if time.time() - cached_time < self.ttl:
return result
result = func(*args, **kwargs)
self.cache[key] = (time.time(), result)
return result
return wrapper
# 使用缓存装饰器
@CacheManager().cached
def get_cached_story(prompt):
"""带缓存的获取故事"""
return story_service.generate_story(prompt)
3. 错误处理增强
import logging
from flask import jsonify
logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)
def handle_api_errors(func):
"""API错误处理装饰器"""
@wraps(func)
def wrapper(*args, **kwargs):
try:
return func(*args, **kwargs)
except Exception as e:
logger.error(f"API Error: {str(e)}")
return jsonify({
"success": False,
"error": "服务暂时不可用,请稍后重试"
}), 500
return wrapper
# 应用错误处理
@handle_api_errors
def generate_story_endpoint():
data = request.get_json()
return story_service.generate_story(data['prompt'])
4. 部署配置文件
# docker-compose.yml
version: '3.8'
services:
web:
build: .
ports:
- "5000:5000"
environment:
- FLASK_ENV=production
- DATABASE_URL=sqlite:///children_story.db
volumes:
- ./uploads:/app/uploads
# requirements-prod.txt
Flask==2.3.3
gunicorn==21.2.0
requests==2.31.0
python-dotenv==1.0.0
5. 启动脚本
#!/bin/bash
# start.sh
echo "🚀 启动儿童故事平台..."
# 检查环境变量
if [ ! -f ".env" ]; then
echo "❌ 缺少.env配置文件"
exit 1
fi
# 安装依赖
pip install -r requirements-prod.txt
# 启动服务
gunicorn -w 4 -b 0.0.0.0:5000 app:app
echo "✅ 服务启动成功!访问 http://localhost:5000"
📊 第7天成果
✅ 异步任务处理优化
✅ 缓存机制实现
✅ 错误处理增强
✅ 部署配置文件准备
✅ 启动脚本编写
预计耗时:4-6小时
关键文件:src/utils/async_manager.py, src/utils/cache.py, docker-compose.yml, start.sh

浙公网安备 33010602011771号