import asyncio import get_config from get_opc_data import get_opc_data, point_data_to_arr from flask import Flask, request, render_template app = Flask(__name__) # route @app.route("/", methods=['GET', 'POST']) @app.route("/get/", methods=['GET', 'POST']) def get(): try: # 1、获取请求参数 # 矿名key sys_key = request.values.get('sys_key') # 自动化系统key sys_name = request.values.get('sys_name') # 2、参数判断 if sys_key is None or len(sys_key) == 0 or sys_name is None or len(sys_name) == 0: return api_get_error("参数错误") except BaseException as e: print(f"异常,参数错误!") return api_get_error(e) # 3、开启服务 # 3.1 获取opc点位arr opc_point_arr = get_config.get_opc_point_arr_conf(sys_key, sys_name) # 3.2 根据点位获取数据 opc_sys_conf = get_config.get_opc_sys_conf(sys_key, sys_name) opc_data = asyncio.run(get_opc_data(opc_sys_conf.opc_server_url, opc_point_arr)) # opc_data = get_opc_data(opc_sys_conf.opc_server_url, opc_point_arr) # 3.3 数据处理 opc_json_data = get_config.get_opc_point_json_conf(sys_key, sys_name) if opc_data is None or isinstance(opc_data, str): return api_get_error("数据读取错误!请检查点位或服务配置!") else: json_data = point_data_to_arr(opc_json_data, opc_data) # 数据处理 return json_data def api_get_error(msg): return '{"code":-1, "msg":"' + msg + '"}' # 开启接口服务 def run_api_server(): config = get_config.get_base_conf() port = config.server_port app.run( host='0.0.0.0', port=port ) if __name__ == "__main__": run_api_server()