from app import create_app
from flask_cors import CORS
import os
import psutil
from flask import Flask,g,request
import time
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
from config import Config
from app.functions.Fpost import Fpost;

app = create_app()
CORS(app, resources={r"/*": {"origins": "*"}})

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
if __name__ == "__main__":
    app.run(debug=True,port=5713,host='0.0.0.0')