12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- from flask import Flask, request, jsonify
- app = Flask(__name__)
- import base64
- from io import BytesIO
- from matplotlib.figure import Figure
- import json
- import logging
- import time
- import signal as sig
- import sys, getopt
- from refill import ChannelPainter
- from refill import day_stamp,time_border
- logging.basicConfig(filename='/var/www/html/data/log/flask.log',
- format='%(levelname)10s %(asctime)s %(name)10s %(thread)d %(message)s',
- level=logging.DEBUG)
- logger = logging.getLogger('plot')
- @app.route('/plot/ch_ratio')
- def ch_ratio():
- try:
- logger.debug('start chratio')
- cur_time = int(time.time())
- interval = request.args.get('interval') or 300
- start_time = request.args.get('start_time') or (cur_time - 7200)
- end_time = request.args.get('end_time') or cur_time
- start_time = time_border(start_time,interval,True)
- end_time = time_border(cur_time,interval,False)
- chnames = request.args.get('chnames') or list()
- card_type = request.args.get('card_type') or None
- spec = request.args.get('spec') or None
- painter = ChannelPainter(start_time=start_time, end_time=end_time, interval=interval, chnames=chnames, card_type=card_type, spec=spec)
- data = painter.paint()
- logger.debug('start_time=%s end_time=%s interval= %s chnames=%s quality=%s card_type=%s amount=%s',
- start_time, interval, chnames, card_type, spec)
- except Exception as ex:
- logger.error(ex)
- return None
- if __name__ == "__main__":
- debug_mode = True
- if debug_mode:
- app.run(debug=True, host='0.0.0.0', port=5000)
- else:
- from gevent import monkey
- from gevent.pywsgi import WSGIServer
- from gevent import signal as geventsig
- monkey.patch_all()
- http_server = WSGIServer(('0.0.0.0', 5000), app)
- geventsig.signal(sig.SIGTERM, lambda: http_server.stop())
- geventsig.signal(sig.SIGINT, lambda: http_server.stop())
- http_server.serve_forever()
|