| # app.py |
| |
| from flask import Flask,g,request |
| import psutil |
| import time |
| import os |
| from flask_cors import CORS |
| from config import Config |
| from extensions import db, migrate |
| from sqlalchemy import create_engine |
| from sqlalchemy.orm import sessionmaker |
| from utils.Fpost import Fpost; |
| app = Flask(__name__) |
| app.config.from_object(Config) |
| def create_app(): |
| |
| |
| # 启用 CORS:允许前端 http://localhost:5173 发起跨域请求 |
| # 生产环境请根据实际域名调整 origins |
| CORS(app, resources={r"/*": {"origins": "*"}}) |
| db.init_app(app) |
| migrate.init_app(app, db) |
| |
| # 在工厂函数里再导入并注册蓝图 |
| from routes.posts import posts_bp |
| from routes.comments import comments_bp |
| |
| app.register_blueprint(posts_bp, url_prefix='/posts') |
| app.register_blueprint(comments_bp, url_prefix='/posts/<int:post_id>/comments') |
| |
| return app |
| |
| proc=psutil.Process(os.getpid()) |
| @app.before_request |
| def before_request(): |
| g.start_time=time.time() |
| g.start_cpu=proc.cpu_times() |
| g.start_mem=proc.memory_info() |
| |
| @app.after_request |
| def after_request(response): |
| end_time = time.time() |
| end_cpu = proc.cpu_times() |
| end_mem = proc.memory_info() |
| |
| elapsed = end_time - g.start_time |
| cpu_user = end_cpu.user - g.start_cpu.user |
| cpu_sys = end_cpu.system - g.start_cpu.system |
| mem_rss = end_mem.rss - g.start_mem.rss |
| |
| #写入性能消耗 |
| engine=create_engine(Config.SQLURL) |
| SessionLocal = sessionmaker(bind=engine) |
| session = SessionLocal() |
| f=Fpost(session) |
| f.recordsyscost( |
| request.path, |
| elapsed, |
| cpu_user, |
| cpu_sys, |
| mem_rss |
| ) |
| return response |
| |
| # 只有直接用 python app.py 时,这段才会执行 |
| if __name__ == '__main__': |
| app = create_app() |
| app.run(host='0.0.0.0', port=5714, debug=True) |