LISHUZUOXUN_yangjiang/Backend/format_backend.py

72 lines
2.2 KiB
Python
Raw Normal View History

2024-09-23 14:54:15 +08:00
import traceback
from multiprocessing import freeze_support
from typing import List
from flask import Flask, jsonify, request
from flask_cors import CORS
from flask_sock import Sock
from werkzeug.serving import ThreadedWSGIServer
from Backend.consensus import *
class Backend:
def __init__(self, name, domain="0.0.0.0", port=0, debug=False):
# 网络配置
self.port = port
self.domain = domain
# 后端app
self.app = Flask(name)
self.sock = Sock(self.app)
# 跨域配置
CORS(self.app, supports_credentials=True)
self.app.debug = debug
# 基本地址
self.base_url = '/'
# 获得系统状态
self.register(name="system_status", func=self.system_status, methods=[REQUEST_MODE_GET])
self.register(name="post_test", func=self.post_test, methods=[REQUEST_MODE_POST])
# 注册后端接口
def register(self, name, func, methods: List):
self.app.add_url_rule(
rule=f"{self.base_url}{name}",
methods=methods,
view_func=func,
endpoint=name
)
# 注册WebSocket接口
def register_websocket(self, name, func):
@self.sock.route(f"{self.base_url}{name}", endpoint=name)
def sock_func(ws):
func(ws)
@staticmethod
def system_status():
try:
return jsonify({"status": STATUS_OK})
except Exception as e:
error_msg = {
"status": STATUS_UNKNOWN_ERROR,
"error_message": f"后端系统启动失败({e.args}),错误来源:{traceback.format_exc()}"
}
return jsonify(error_msg)
@staticmethod
def post_test():
try:
data = request.get_json()
return jsonify({"status": STATUS_OK, "post_data": data})
except Exception as e:
error_msg = {
"status": STATUS_UNKNOWN_ERROR,
"error_message": f"后端系统错误({e.args}),错误来源:{traceback.format_exc()}"
}
return jsonify(error_msg)
def start_backend(self):
server = ThreadedWSGIServer(app=self.app, port=self.port, host=self.domain)
server.serve_forever(0.001)