stanley-king пре 2 година
родитељ
комит
7fbd230d97
4 измењених фајлова са 78 додато и 46 уклоњено
  1. 29 2
      plot/app.py
  2. 1 39
      plot/plot_control.py
  3. 7 5
      plot/refill/__init__.py
  4. 41 0
      plot/refill/helper.py

+ 29 - 2
plot/app.py

@@ -1,5 +1,3 @@
-import os
-
 from gevent import monkey
 from gevent.pywsgi import WSGIServer
 from gevent import signal as geventsig
@@ -25,6 +23,35 @@ app.debug = True
 
 curname = __name__
 
+@app.route('/plot/ch_ratio')
+def ch_ratio():
+    from refill import ChannelPainter
+    from refill import filter_chname,filter_cardtype
+
+    try:
+        logger.debug('start chratio')
+        cur_time = int(time.time())
+        start_time = int(request.args.get('start_time') or (cur_time - 7200))
+        end_time = int(request.args.get('end_time') or cur_time)
+
+        chnames = request.args.get('chnames') or None
+        chnames = filter_chname(chnames)
+
+        card_types = request.args.get('card_types') or None
+        card_types = filter_cardtype(card_types)
+
+        spec = request.args.get('spec') or None
+        if spec is not None:
+            spec = int(spec.strip())
+        painter = ChannelPainter(start_time=start_time, end_time=end_time, chnames=chnames, card_types=card_types, spec=spec)
+        buf = painter.paint()
+
+        data = base64.b64encode(buf.getbuffer()).decode("ascii")
+        return f"<img src='data:image/png;base64,{data}'/>"
+    except Exception as ex:
+        logger.error(ex)
+        return f"<img src='data:image/png;base64,{[]}'/>"
+
 
 @app.route('/plot/index')
 def index():

+ 1 - 39
plot/plot_control.py

@@ -10,53 +10,15 @@ import logging
 import time
 import signal as sig
 import sys, getopt
-import re
 
 from refill import ChannelPainter
-from refill import day_stamp,time_border
-
+from refill import filter_chname,filter_cardtype
 
 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')
 
-def filter_chname(chnames):
-    if chnames is not None:
-        chnames = chnames.strip()
-
-    if chnames is None or len(chnames) == 0:
-        chnames = set()
-    else:
-        items = re.split(r',', chnames)
-        names = [name.strip() for name in items]
-        namelist = []
-        for name in names:
-            if len(name) > 0:
-                namelist.append(name)
-        chnames = set(namelist)
-    return chnames
-
-def filter_cardtype(card_types):
-    if card_types is not None:
-        card_types = card_types.strip()
-
-    if card_types is None or len(card_types) == 0:
-        result = {4, 5, 6} #默认话费类型
-    else:
-        items = re.split(r',', card_types)
-        stypes = [type.strip() for type in items]
-        types = []
-        for stype in stypes:
-            try:
-                type = int(stype)
-                types.append(type)
-            except Exception as ex:
-                logger.error(ex)
-
-        result = set(types)
-    return result
-
 @app.route('/plot/ch_ratio')
 def ch_ratio():
     try:

+ 7 - 5
plot/refill/__init__.py

@@ -1,6 +1,5 @@
-
 from .QueueListener import queueListener
-from .DataStream import DataWriteStream,DataReadStream,open_hdf5,day_stamp,time_border
+from .DataStream import DataWriteStream, DataReadStream, open_hdf5, day_stamp, time_border
 from .MerchantWriter import MerchantWriter
 from .ChannelWriter import ChannelWriter
 from .NetchkWriter import NetchkWriter
@@ -10,9 +9,12 @@ from .NetchkReader import NetchkReader
 from .ChannelReader import ChannelReader
 
 from .ChannelPainter import ChannelPainter
+from .helper import filter_chname, filter_cardtype
 
 __all__ = ['DataWriteStream', 'DataReadStream',
-           'MerchantWriter', 'ChannelWriter','NetchkWriter',
-           'MerchantReader','NetchkReader','ChannelReader',
+           'MerchantWriter', 'ChannelWriter', 'NetchkWriter',
+           'MerchantReader', 'NetchkReader', 'ChannelReader',
            'ChannelPainter',
-           'queueListener','open_hdf5','day_stamp','time_border']
+           'queueListener', 'open_hdf5', 'day_stamp', 'time_border',
+           'filter_chname', 'filter_cardtype'
+           ]

+ 41 - 0
plot/refill/helper.py

@@ -0,0 +1,41 @@
+
+import re
+import logging
+
+logger = logging.getLogger('plot')
+
+def filter_chname(chnames):
+    if chnames is not None:
+        chnames = chnames.strip()
+
+    if chnames is None or len(chnames) == 0:
+        chnames = set()
+    else:
+        items = re.split(r',', chnames)
+        names = [name.strip() for name in items]
+        namelist = []
+        for name in names:
+            if len(name) > 0:
+                namelist.append(name)
+        chnames = set(namelist)
+    return chnames
+
+def filter_cardtype(card_types):
+    if card_types is not None:
+        card_types = card_types.strip()
+
+    if card_types is None or len(card_types) == 0:
+        result = {4, 5, 6} #默认话费类型
+    else:
+        items = re.split(r',', card_types)
+        stypes = [type.strip() for type in items]
+        types = []
+        for stype in stypes:
+            try:
+                type = int(stype)
+                types.append(type)
+            except Exception as ex:
+                logger.error(ex)
+
+        result = set(types)
+    return result