blob: 0c371fd29b95b45614c19a7101ddae794d3bd3d4 [file] [log] [blame]
# 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)