api_server.py 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. import asyncio
  2. import get_config
  3. import json
  4. from get_opc_data import get_opc_data, point_data_to_arr, get_redis_conn
  5. from flask import Flask, request, render_template
  6. app = Flask(__name__)
  7. # route
  8. @app.route("/", methods=['GET', 'POST'])
  9. @app.route("/get/", methods=['GET', 'POST'])
  10. def get():
  11. try:
  12. # 1、获取请求参数
  13. # 矿名key
  14. sys_key = request.values.get('sys_key')
  15. # 自动化系统key
  16. sys_name = request.values.get('sys_name')
  17. # 2、参数判断
  18. if sys_key is None or len(sys_key) == 0 or sys_name is None or len(sys_name) == 0:
  19. return api_get_error("参数错误")
  20. except BaseException as e:
  21. print(f"异常,参数错误!")
  22. return api_get_error(e)
  23. # 3、开启服务
  24. # 3.1 获取opc点位arr
  25. opc_point_arr = get_config.get_opc_point_arr_conf(sys_key, sys_name)
  26. # 3.2 根据点位获取数据
  27. opc_sys_conf = get_config.get_opc_sys_conf(sys_key, sys_name)
  28. opc_data = asyncio.run(get_opc_data(opc_sys_conf.opc_server_url, opc_point_arr))
  29. # opc_data = get_opc_data(opc_sys_conf.opc_server_url, opc_point_arr)
  30. # 3.3 数据处理
  31. opc_json_data = get_config.get_opc_point_json_conf(sys_key, sys_name)
  32. if opc_data is None or isinstance(opc_data, str):
  33. return api_get_error("数据读取错误!请检查点位或服务配置!")
  34. else:
  35. # 接口数据处理
  36. json_data = point_data_to_arr(opc_json_data, opc_data)
  37. # 获取redis
  38. redis_conn = get_redis_conn()
  39. # 接口数据存入redis
  40. redis_key = f"{sys_key}_{sys_name}"
  41. json_str = json.dumps(json_data)
  42. redis_conn.set(str(redis_key), json_str)
  43. # 数据处理
  44. return json_data
  45. @app.route("/get_base_json/", methods=['GET', 'POST'])
  46. def get_base_json():
  47. try:
  48. # 1、获取请求参数
  49. # 矿名key
  50. sys_key = request.values.get('sys_key')
  51. # 自动化系统key
  52. sys_name = request.values.get('sys_name')
  53. # 2、参数判断
  54. if sys_key is None or len(sys_key) == 0 or sys_name is None or len(sys_name) == 0:
  55. return api_get_error("参数错误")
  56. except BaseException as e:
  57. print(f"异常,参数错误!")
  58. return api_get_error(e)
  59. opc_json_data = get_config.get_opc_point_json_conf(sys_key, sys_name)
  60. return opc_json_data
  61. @app.route("/get_point_arr/", methods=['GET', 'POST'])
  62. def get_point_arr():
  63. try:
  64. # 1、获取请求参数
  65. # 矿名key
  66. sys_key = request.values.get('sys_key')
  67. # 自动化系统key
  68. sys_name = request.values.get('sys_name')
  69. # 2、参数判断
  70. if sys_key is None or len(sys_key) == 0 or sys_name is None or len(sys_name) == 0:
  71. return api_get_error("参数错误")
  72. except BaseException as e:
  73. print(f"异常,参数错误!")
  74. return api_get_error(e)
  75. opc_point_arr = get_config.get_opc_point_arr_conf(sys_key, sys_name)
  76. return opc_point_arr
  77. def api_get_error(msg):
  78. return '{"code":-1, "msg":"' + msg + '"}'
  79. # 开启接口服务
  80. def run_api_server():
  81. config = get_config.get_base_conf()
  82. port = config.server_port
  83. app.run(
  84. host='0.0.0.0',
  85. port=port
  86. )
  87. if __name__ == "__main__":
  88. run_api_server()