pv_forecasting/run.py

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)