blob: 0c371fd29b95b45614c19a7101ddae794d3bd3d4 [file] [log] [blame]
TRM-codingd1cbf672025-06-18 15:15:08 +08001# app.py
2
TRM-coding882dc442025-06-18 20:13:21 +08003from flask import Flask,g,request
4import psutil
5import time
6import os
TRM-codingd1cbf672025-06-18 15:15:08 +08007from flask_cors import CORS
8from config import Config
9from extensions import db, migrate
TRM-coding882dc442025-06-18 20:13:21 +080010from sqlalchemy import create_engine
11from sqlalchemy.orm import sessionmaker
12from utils.Fpost import Fpost;
13app = Flask(__name__)
14app.config.from_object(Config)
TRM-codingd1cbf672025-06-18 15:15:08 +080015def create_app():
TRM-coding882dc442025-06-18 20:13:21 +080016
TRM-codingd1cbf672025-06-18 15:15:08 +080017
18 # 启用 CORS:允许前端 http://localhost:5173 发起跨域请求
19 # 生产环境请根据实际域名调整 origins
20 CORS(app, resources={r"/*": {"origins": "*"}})
21 db.init_app(app)
22 migrate.init_app(app, db)
23
24 # 在工厂函数里再导入并注册蓝图
25 from routes.posts import posts_bp
26 from routes.comments import comments_bp
27
28 app.register_blueprint(posts_bp, url_prefix='/posts')
29 app.register_blueprint(comments_bp, url_prefix='/posts/<int:post_id>/comments')
30
31 return app
32
TRM-coding882dc442025-06-18 20:13:21 +080033proc=psutil.Process(os.getpid())
34@app.before_request
35def before_request():
36 g.start_time=time.time()
37 g.start_cpu=proc.cpu_times()
38 g.start_mem=proc.memory_info()
39
40@app.after_request
41def after_request(response):
42 end_time = time.time()
43 end_cpu = proc.cpu_times()
44 end_mem = proc.memory_info()
45
46 elapsed = end_time - g.start_time
47 cpu_user = end_cpu.user - g.start_cpu.user
48 cpu_sys = end_cpu.system - g.start_cpu.system
49 mem_rss = end_mem.rss - g.start_mem.rss
50
51 #写入性能消耗
52 engine=create_engine(Config.SQLURL)
53 SessionLocal = sessionmaker(bind=engine)
54 session = SessionLocal()
55 f=Fpost(session)
56 f.recordsyscost(
57 request.path,
58 elapsed,
59 cpu_user,
60 cpu_sys,
61 mem_rss
62 )
63 return response
64
TRM-codingd1cbf672025-06-18 15:15:08 +080065# 只有直接用 python app.py 时,这段才会执行
66if __name__ == '__main__':
67 app = create_app()
68 app.run(host='0.0.0.0', port=5714, debug=True)