import os from gevent import monkey from gevent.pywsgi import WSGIServer from gevent import signal as geventsig import gevent from flask import Flask import base64 from io import BytesIO from matplotlib.figure import Figure import json from DataCenter import dataCenter # from plog import initLog from flask import request, jsonify import logging from logging.handlers import RotatingFileHandler import time import signal as sig app = Flask(__name__) app.debug = True curname = __name__ @app.route('/plot/index') def index(): time_stamp = request.args.get('time_stamp') interval = request.args.get('interval') chname = request.args.get('chname') quality = request.args.get('quality') card_type = request.args.get('card_type') amount = request.args.get('amount') app.logger.info('time_stamp=%s interval= %s chname=%s quality=%s card_type=%s amount=%s', time_stamp, interval, chname, quality, card_type, amount) if time_stamp is None: time_stamp = time.time() else: time_stamp = int(time_stamp) if interval is None: interval = 300 else: interval = int(interval) # buf = dataCenter.draw_plot(1618243200, chname=chname) # , quality=quality, card_type=card_type, interval=interval, # amount=amount)1618502478 buf = dataCenter.draw_plot(time_stamp, interval=interval, chname=chname, quality=quality, card_type=card_type, amount=amount) data = base64.b64encode(buf.getbuffer()).decode("ascii") return f"" @app.route('/plot/days') def days(): datas = dataCenter.days() return jsonify(datas) @app.route('/plot/paths') def paths(): time_stamp = request.args.get('time_stamp') time_stamp = int(time_stamp) paths = dataCenter.paths(time_stamp) return jsonify(paths) if __name__ == "__main__": handler = logging.FileHandler(filename='/var/www/html/data/log/plot.log') handler.setLevel(logging.DEBUG) logging_format = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s', datefmt='%Y-%m-%d %H:%M:%S') handler.setFormatter(logging_format) app.logger.addHandler(handler) logger = logging.getLogger('app') logger.info('app') monkey.patch_all() http_server = WSGIServer(('0.0.0.0', 5000), app) def shutdown(): print('Shutting down ...') http_server.stop() exit(sig.SIGTERM) geventsig.signal(sig.SIGTERM, lambda: http_server.stop()) geventsig.signal(sig.SIGINT, lambda: http_server.stop()) http_server.serve_forever()