plot_control.py 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. from flask import Flask, request, jsonify
  2. app = Flask(__name__)
  3. import base64
  4. from io import BytesIO
  5. from matplotlib.figure import Figure
  6. import json
  7. import logging
  8. import time
  9. import signal as sig
  10. import sys, getopt
  11. from refill import ChannelPainter
  12. from refill import day_stamp,time_border
  13. logging.basicConfig(filename='/var/www/html/data/log/flask.log',
  14. format='%(levelname)10s %(asctime)s %(name)10s %(thread)d %(message)s',
  15. level=logging.DEBUG)
  16. logger = logging.getLogger('plot')
  17. @app.route('/plot/ch_ratio')
  18. def ch_ratio():
  19. try:
  20. logger.debug('start chratio')
  21. cur_time = int(time.time())
  22. interval = request.args.get('interval') or 300
  23. start_time = request.args.get('start_time') or (cur_time - 7200)
  24. end_time = request.args.get('end_time') or cur_time
  25. start_time = time_border(start_time,interval,True)
  26. end_time = time_border(cur_time,interval,False)
  27. chnames = request.args.get('chnames') or list()
  28. card_type = request.args.get('card_type') or None
  29. spec = request.args.get('spec') or None
  30. painter = ChannelPainter(start_time=start_time, end_time=end_time, interval=interval, chnames=chnames, card_type=card_type, spec=spec)
  31. data = painter.paint()
  32. logger.debug('start_time=%s end_time=%s interval= %s chnames=%s quality=%s card_type=%s amount=%s',
  33. start_time, interval, chnames, card_type, spec)
  34. except Exception as ex:
  35. logger.error(ex)
  36. return None
  37. if __name__ == "__main__":
  38. debug_mode = True
  39. if debug_mode:
  40. app.run(debug=True, host='0.0.0.0', port=5000)
  41. else:
  42. from gevent import monkey
  43. from gevent.pywsgi import WSGIServer
  44. from gevent import signal as geventsig
  45. monkey.patch_all()
  46. http_server = WSGIServer(('0.0.0.0', 5000), app)
  47. geventsig.signal(sig.SIGTERM, lambda: http_server.stop())
  48. geventsig.signal(sig.SIGINT, lambda: http_server.stop())
  49. http_server.serve_forever()