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