59 lines
1.8 KiB
Python
59 lines
1.8 KiB
Python
|
# -*-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)
|