diff --git a/Merge/back_rhj/app.py b/Merge/back_rhj/app.py
index df7a598..967b921 100644
--- a/Merge/back_rhj/app.py
+++ b/Merge/back_rhj/app.py
@@ -1,6 +1,47 @@
 from app import create_app
+from flask_cors import CORS
+import os
+import psutil
+import time
+import GPUtil
+from flask import g, request
+from sqlalchemy import create_engine
+from sqlalchemy.orm import sessionmaker
+from config import Config
+from app.utils.gpuwriter import GpuWriter
 
 app = create_app()
+CORS(app,
+     resources={r"/*": {"origins": "*"}},
+     supports_credentials=True,
+     allow_headers=["Content-Type", "Authorization"]
+)
+
+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):
+    try:
+        # 记录GPU使用情况
+        gpu_writer = GpuWriter(Config.SQLURL)
+        gpus = GPUtil.getGPUs()
+        
+        for gpu in gpus:
+            gpu_writer.write_gpu_usage(
+                gpu_id=gpu.id,
+                gpu_usage=gpu.load * 100,  # 转换为百分比
+                gpu_memory_usage=gpu.memoryUsed  # MB
+            )
+    except Exception as e:
+        print(f"GPU使用情况记录失败: {e}")
+    
+    return response
 
 if __name__ == "__main__":
     app.run(debug=True,port=8082,host='0.0.0.0')
\ No newline at end of file
