# -*-coding:utf-8-*- import os os.environ['CUDA_VISIBLE_DEVICES'] = '-1' import json from flask import Flask, request, make_response from logzero import logger current_path = os.path.dirname(os.path.abspath(__file__)) # for local # current_path = "/app" # for docker logger.info(f"{current_path}") from tools import cal_generation, cal_angle, load_config, cal_complex_gen app = Flask(__name__) angle_config = load_config(f"{current_path}/config/angle.json") @app.route('/angle/', methods=["POST"]) def get_angle_info(): resp_info = dict() if request.method == "POST": prov = request.json.get('province') city = request.json.get('city') logger.info(f"{prov}-{city}") try: best_angle = cal_angle(prov, city, angle_config) resp_info["code"] = 200 resp_info["data"] = best_angle except Exception as e: resp_info["code"] = 406 resp_info["data"] = str(e) resp = make_response(json.dumps(resp_info)) resp.status_code = 200 return resp @app.route('/power/', methods=["POST"]) def get_power(): resp_info = dict() if request.method == "POST": prov = request.json.get('province') city = request.json.get('city') cap = float(request.json.get('capacity')) angle = float(request.json.get('angle')) dhi_list = request.json.get('dhi') dhi_list = [float(x) for x in dhi_list] logger.info(dhi_list) try: best_angle = cal_angle(prov, city, angle_config)[0] power_trend = cal_generation(cap, angle, best_angle, dhi_list) resp_info["code"] = 200 resp_info["data"] = power_trend except Exception as e: logger.info(e) resp_info["code"] = 406 resp_info["data"] = str(e) resp = make_response(json.dumps(resp_info)) resp.status_code = 200 return resp @app.route('/power_custom/', methods=["POST"]) def get_power_custom(): resp_info = dict() if request.method == "POST": prov = request.json.get('province') city = request.json.get('city') cap = request.json.get('capacity') angle = request.json.get('angle') dhi_list = request.json.get('dhi') tmp_list = request.json.get("tmp") materials = request.json.get("materials") sigma = request.json.get("sigma") t_noct = request.json.get("t_noct") try: best_angle = cal_angle(prov, city) power_trend = cal_complex_gen(cap, angle, best_angle, dhi_list, tmp_list, materials, sigma, t_noct) resp_info["code"] = 200 resp_info["data"] = power_trend except Exception as e: resp_info["code"] = 406 resp_info["data"] = str(e) resp = make_response(json.dumps(resp_info)) resp.status_code = 200 return resp if __name__ == '__main__': app.run(port=9515, host="0.0.0.0", debug=True)