第7天:系统优化与部署
📋 第7天概述
进行系统性能优化,完善错误处理机制,并完成项目部署准备。
🎯 第7天目标
主要任务:系统优化、错误处理完善、部署配置
核心需求:性能提升、稳定性增强、部署就绪
🔧 核心优化代码
1. 异步任务处理优化
import asyncio
from concurrent.futures import ThreadPoolExecutorclass 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 wrapsclass CacheManager:def __init__(self, ttl=3600): # 1小时缓存self.cache = {}self.ttl = ttldef 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 resultresult = func(*args, **kwargs)self.cache[key] = (time.time(), result)return resultreturn wrapper# 使用缓存装饰器
@CacheManager().cached
def get_cached_story(prompt):"""带缓存的获取故事"""return story_service.generate_story(prompt)
3. 错误处理增强
import logging
from flask import jsonifylogging.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": "服务暂时不可用,请稍后重试"}), 500return 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.dbvolumes:- ./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.shecho "🚀 启动儿童故事平台..."# 检查环境变量
if [ ! -f ".env" ]; thenecho "❌ 缺少.env配置文件"exit 1
fi# 安装依赖
pip install -r requirements-prod.txt# 启动服务
gunicorn -w 4 -b 0.0.0.0:5000 app:appecho "✅ 服务启动成功!访问 http://localhost:5000"
📊 第7天成果
✅ 异步任务处理优化
✅ 缓存机制实现
✅ 错误处理增强
✅ 部署配置文件准备
✅ 启动脚本编写
预计耗时:4-6小时
关键文件:src/utils/async_manager.py, src/utils/cache.py, docker-compose.yml, start.sh