migrate to quart
This commit is contained in:
parent
f9e2e1b188
commit
9f93b1a158
20
backend.py
20
backend.py
@ -1,20 +1,16 @@
|
||||
from gevent import pywsgi, monkey
|
||||
monkey.patch_all()
|
||||
|
||||
import cosmic
|
||||
import tidi
|
||||
from utils import *
|
||||
import saber
|
||||
import radar
|
||||
import balloon
|
||||
from flask import Flask, request
|
||||
from flask_cors import CORS
|
||||
from quart import Quart, request
|
||||
from quart_cors import cors
|
||||
from typing import get_args
|
||||
import sys
|
||||
import matplotlib.font_manager as fm
|
||||
|
||||
app = Flask(__name__)
|
||||
CORS(app)
|
||||
app = Quart(__name__)
|
||||
|
||||
fm.fontManager.addfont("./SimHei.ttf")
|
||||
@app.before_request
|
||||
@ -38,7 +34,7 @@ app.register_blueprint(saber.saber_module, url_prefix="/saber")
|
||||
app.register_blueprint(tidi.tidi_module, url_prefix="/tidi")
|
||||
app.register_blueprint(cosmic.cosmic_module, url_prefix="/cosmic")
|
||||
# allow cors
|
||||
CORS(app)
|
||||
app = cors(app)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
@ -46,12 +42,8 @@ if __name__ == '__main__':
|
||||
args = sys.argv
|
||||
if 'prod' in args:
|
||||
|
||||
# app.run()
|
||||
# import gevent
|
||||
server = pywsgi.WSGIServer(('0.0.0.0', 5000), app)
|
||||
server.serve_forever()
|
||||
|
||||
pass
|
||||
elif 'debug' in args:
|
||||
app.run("0.0.0.0",port=18200,debug=True)
|
||||
else:
|
||||
raise Exception("Invalied")
|
||||
raise Exception("Invalied Mode")
|
||||
|
||||
@ -1,9 +1,9 @@
|
||||
from flask import Blueprint
|
||||
from quart import Blueprint
|
||||
import balloon.extract_wave
|
||||
import balloon.read_data
|
||||
import balloon.plot_once
|
||||
import balloon.plot_year
|
||||
from flask import Flask, jsonify, request, send_file
|
||||
from quart import jsonify, request, send_file
|
||||
from balloon.plot_once_backend import render_by_mode_single
|
||||
from balloon.plot_year_backend import get_all_modes, render_based_on_mode
|
||||
from utils import *
|
||||
@ -58,7 +58,7 @@ def list_stations():
|
||||
|
||||
|
||||
@balloon_module.route("/render/year")
|
||||
def render_full_year():
|
||||
async def render_full_year():
|
||||
# get start_year and end_year from query
|
||||
start_year = request.args.get('start_year')
|
||||
end_year = request.args.get('end_year')
|
||||
@ -67,11 +67,11 @@ def render_full_year():
|
||||
print(start_year, end_year)
|
||||
df = get_dataframe_between_year(int(start_year), int(end_year))
|
||||
buff = render_based_on_mode(df, mode, season)
|
||||
return send_file(buff, mimetype='image/png')
|
||||
return await send_file(buff, mimetype='image/png')
|
||||
|
||||
|
||||
@balloon_module.route("/render/single")
|
||||
def render_single_path():
|
||||
async def render_single_path():
|
||||
path = request.args.get('path')
|
||||
mode = request.args.get('mode')
|
||||
data = balloon.read_data(path)
|
||||
@ -79,4 +79,4 @@ def render_single_path():
|
||||
if buff is None:
|
||||
# give a 204 response if no data is found
|
||||
return '', 204
|
||||
return send_file(buff, mimetype='image/png')
|
||||
return await send_file(buff, mimetype='image/png')
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
from io import BytesIO
|
||||
from flask import Blueprint, request, send_file
|
||||
from quart import Blueprint, request, send_file
|
||||
from matplotlib import pyplot as plt
|
||||
|
||||
from cosmic.temp_render import temp_render
|
||||
@ -12,11 +12,11 @@ def get_meta():
|
||||
return []
|
||||
|
||||
@cosmic_module.route('/temp_render')
|
||||
def render():
|
||||
async def render():
|
||||
T = request.args.get("T", 16)
|
||||
temp_render(T=int(T))
|
||||
buf = BytesIO()
|
||||
|
||||
plt.savefig(buf, format="png")
|
||||
buf.seek(0)
|
||||
return send_file(buf, mimetype="image/png")
|
||||
return await send_file(buf, mimetype="image/png")
|
||||
@ -1,7 +1,7 @@
|
||||
import asyncio
|
||||
import glob
|
||||
from io import BytesIO
|
||||
from flask import Blueprint, request, send_file
|
||||
from quart import Blueprint, request, send_file
|
||||
from matplotlib import pyplot as plt
|
||||
from radar.plot_original import final_render_v2
|
||||
from radar.plot_prod import final_plot_v2
|
||||
@ -24,7 +24,7 @@ def get_all_models():
|
||||
|
||||
|
||||
@radar_module.route('/render/heatmap')
|
||||
def render_v1():
|
||||
async def render_v1():
|
||||
"""
|
||||
wind_type: Any,
|
||||
year: Any,
|
||||
@ -55,11 +55,11 @@ def render_v1():
|
||||
buf.seek(0)
|
||||
# close the plot
|
||||
plt.close()
|
||||
return send_file(buf, mimetype='image/png')
|
||||
return await send_file(buf, mimetype='image/png')
|
||||
|
||||
|
||||
@radar_module.route('/render/changes')
|
||||
def render_v2():
|
||||
async def render_v2():
|
||||
"""
|
||||
year: Any,
|
||||
station: Any,
|
||||
@ -81,4 +81,4 @@ def render_v2():
|
||||
buffer = final_plot_v2(int(year), station, model_name, month_range)
|
||||
buffer.seek(0)
|
||||
|
||||
return send_file(buffer, mimetype='image/png')
|
||||
return await send_file(buffer, mimetype='image/png')
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
import glob
|
||||
from io import BytesIO
|
||||
from flask import Blueprint, request, send_file
|
||||
from quart import Blueprint, request, send_file
|
||||
from matplotlib import pyplot as plt
|
||||
from saber.process import DataProcessor
|
||||
from saber.render import Renderer
|
||||
@ -40,11 +40,11 @@ def get_processer():
|
||||
return _p
|
||||
|
||||
|
||||
def extract_payload():
|
||||
async def extract_payload():
|
||||
buffer = BytesIO()
|
||||
plt.savefig(buffer, format="png")
|
||||
buffer.seek(0)
|
||||
return send_file(buffer, mimetype="image/png")
|
||||
return await send_file(buffer, mimetype="image/png")
|
||||
|
||||
|
||||
_all_saber_files = glob.glob("./saber/data/**/**.nc", recursive=True)
|
||||
@ -67,7 +67,7 @@ def get_days():
|
||||
|
||||
|
||||
@saber_module.route("/render/plot_wave_fitting")
|
||||
def do_plot_wave_day_fitting():
|
||||
async def do_plot_wave_day_fitting():
|
||||
path = request.args.get("path")
|
||||
day = request.args.get("day")
|
||||
height = request.args.get("height_no")
|
||||
@ -76,11 +76,11 @@ def do_plot_wave_day_fitting():
|
||||
processor = get_processer()
|
||||
data = processor.process_day(ncfile, int(day))
|
||||
renderer.plot_wave_fitting(data, int(height))
|
||||
return extract_payload()
|
||||
return await extract_payload()
|
||||
|
||||
|
||||
@saber_module.route("/render/day_fft_ifft_plot")
|
||||
def do_day_fft_ifft_plot():
|
||||
async def do_day_fft_ifft_plot():
|
||||
path = request.args.get("path")
|
||||
day = request.args.get("day")
|
||||
cycle_no = request.args.get("cycle_no")
|
||||
@ -89,11 +89,11 @@ def do_day_fft_ifft_plot():
|
||||
processor = get_processer()
|
||||
data = processor.process_day(ncfile, int(day))
|
||||
renderer.day_fft_ifft_plot(wave_data=data, cycle_no=int(cycle_no))
|
||||
return extract_payload()
|
||||
return await extract_payload()
|
||||
|
||||
|
||||
@saber_module.route("/render/day_cycle_power_wave_plot")
|
||||
def do_day_cycle_power_wave_plot():
|
||||
async def do_day_cycle_power_wave_plot():
|
||||
path = request.args.get("path")
|
||||
day = request.args.get("day")
|
||||
cycle_no = request.args.get("cycle_no")
|
||||
@ -102,11 +102,11 @@ def do_day_cycle_power_wave_plot():
|
||||
processor = get_processer()
|
||||
data = processor.process_day(ncfile, int(day))
|
||||
renderer.day_cycle_power_wave_plot(wave_data=data, cycle_no=int(cycle_no))
|
||||
return extract_payload()
|
||||
return await extract_payload()
|
||||
|
||||
|
||||
@saber_module.route("/render/month_power_wave_plot")
|
||||
def do_month_power_wave_plot():
|
||||
async def do_month_power_wave_plot():
|
||||
path = request.args.get("path")
|
||||
month = request.args.get("month")
|
||||
|
||||
@ -114,15 +114,15 @@ def do_month_power_wave_plot():
|
||||
processor = get_processer()
|
||||
data = processor.process_month(ncfile)
|
||||
renderer.month_power_wave_plot(wave_data=data, date_time=ncfile.date_time)
|
||||
return extract_payload()
|
||||
return await extract_payload()
|
||||
|
||||
|
||||
@saber_module.route("/render/year_power_wave_plot")
|
||||
def do_year_power_wave_plot():
|
||||
async def do_year_power_wave_plot():
|
||||
year = request.args.get("year")
|
||||
processor = get_processer()
|
||||
data = processor.process_year([
|
||||
data_nc_load(path) for path in glob.glob(f"./saber/data/{year}/*.nc")
|
||||
])
|
||||
renderer.year_power_wave_plot(year_wave=data)
|
||||
return extract_payload()
|
||||
return await extract_payload()
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
import glob
|
||||
from io import BytesIO
|
||||
from flask import Blueprint, request, send_file
|
||||
from quart import Blueprint, request, send_file
|
||||
from matplotlib import pyplot as plt
|
||||
|
||||
from tidi.plot import TidiPlotv2
|
||||
@ -19,7 +19,7 @@ def get_all_years():
|
||||
}
|
||||
|
||||
@tidi_module.route('/render/wave')
|
||||
def render_wave():
|
||||
async def render_wave():
|
||||
mode = request.args.get('mode')
|
||||
year = request.args.get('year')
|
||||
k = request.args.get('k')
|
||||
@ -33,10 +33,10 @@ def render_wave():
|
||||
plt.savefig(buffer, format="png")
|
||||
buffer.seek(0)
|
||||
|
||||
return send_file(buffer, mimetype="image/png")
|
||||
return await send_file(buffer, mimetype="image/png")
|
||||
|
||||
@tidi_module.route('/render/month_stats_v1')
|
||||
def render_stats_v1():
|
||||
async def render_stats_v1():
|
||||
year = request.args.get('year')
|
||||
year = int(year)
|
||||
|
||||
@ -45,10 +45,10 @@ def render_stats_v1():
|
||||
buffer = BytesIO()
|
||||
plt.savefig(buffer, format="png")
|
||||
buffer.seek(0)
|
||||
return send_file(buffer, mimetype="image/png")
|
||||
return await send_file(buffer, mimetype="image/png")
|
||||
|
||||
@tidi_module.route('/render/month_stats_v2')
|
||||
def render_stats_v2():
|
||||
async def render_stats_v2():
|
||||
year = request.args.get('year')
|
||||
year = int(year)
|
||||
|
||||
@ -57,4 +57,4 @@ def render_stats_v2():
|
||||
buffer = BytesIO()
|
||||
plt.savefig(buffer, format="png")
|
||||
buffer.seek(0)
|
||||
return send_file(buffer, mimetype="image/png")
|
||||
return await send_file(buffer, mimetype="image/png")
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user