123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596 |
- 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"<img src='data:image/png;base64,{data}'/>"
- @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()
|