# -*-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 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) 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 = request.json.get('capacity') angle = request.json.get('angle') dhi_list = request.json.get('dhi') try: best_angle = cal_angle(prov, city) power_trend = cal_generation(cap, angle, best_angle, dhi_list) 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=False)