stanley-king 2 år sedan
förälder
incheckning
df7369bd43

+ 1 - 1
admin/control/refill_analysis.php

@@ -170,4 +170,4 @@ class refill_analysisControl extends SystemControl
         }
         }
         return $array;
         return $array;
     }
     }
-}
+}

+ 2 - 0
docker/compose/homecuda/cli/docker-compose.yml

@@ -41,6 +41,8 @@ services:
 
 
   pythoncli:
   pythoncli:
     image: pycpu:3.7.10
     image: pycpu:3.7.10
+    ports:
+      - 5000:5000
     volumes:
     volumes:
       - /mnt/xyzshop/docker/compose/homecuda/conf/etc/localtime:/etc/localtime:ro
       - /mnt/xyzshop/docker/compose/homecuda/conf/etc/localtime:/etc/localtime:ro
       - /mnt/xyzshop:/var/www/html
       - /mnt/xyzshop:/var/www/html

+ 25 - 0
plot/flask_test.py

@@ -0,0 +1,25 @@
+from flask import Flask
+from flask import request, jsonify
+
+app = Flask(__name__)
+
+import logging
+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('/hello')
+def hello_world():
+    logger.debug('start chratio')
+    start_time = request.args.get('start_time') or None
+    end_time = request.args.get('end_time') or None
+    interval = request.args.get('interval') or None
+    chnames = request.args.get('chnames') or None
+    card_type = request.args.get('card_type') or None
+    spec = request.args.get('spec') or None
+    return 'Hello World'
+
+
+if __name__ == '__main__':
+    app.run(debug=True, host='0.0.0.0', port=5000)

+ 29 - 21
plot/plot_control.py

@@ -1,41 +1,41 @@
-# from gevent import monkey
-# from gevent.pywsgi import WSGIServer
-# from gevent import signal as geventsig
+from flask import Flask, request, jsonify
+app = Flask(__name__)
 
 
 import base64
 import base64
 from io import BytesIO
 from io import BytesIO
 from matplotlib.figure import Figure
 from matplotlib.figure import Figure
 import json
 import json
 
 
-from flask import request, jsonify
 import logging
 import logging
 import time
 import time
 import signal as sig
 import signal as sig
 import sys, getopt
 import sys, getopt
 
 
 from refill import ChannelPainter
 from refill import ChannelPainter
-from refill import day_stamp
-
-from flask import Flask
-app = Flask(__name__)
+from refill import day_stamp,time_border
 
 
 logging.basicConfig(filename='/var/www/html/data/log/flask.log',
 logging.basicConfig(filename='/var/www/html/data/log/flask.log',
                     format='%(levelname)10s  %(asctime)s  %(name)10s %(thread)d %(message)s',
                     format='%(levelname)10s  %(asctime)s  %(name)10s %(thread)d %(message)s',
                     level=logging.DEBUG)
                     level=logging.DEBUG)
 logger = logging.getLogger('plot')
 logger = logging.getLogger('plot')
 
 
-@app.route('/plot/channelratio')
-def channelratio():
+@app.route('/plot/ch_ratio')
+def ch_ratio():
     try:
     try:
         logger.debug('start chratio')
         logger.debug('start chratio')
-        start_time = request.args.get('start_time') or None
-        end_time = request.args.get('end_time') or None
-        interval = request.args.get('interval') or None
-        chnames = request.args.get('chnames') or None
+        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
         card_type = request.args.get('card_type') or None
         spec = request.args.get('spec') 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)
+        painter = ChannelPainter(start_time=start_time, end_time=end_time, interval=interval, chnames=chnames, card_type=card_type, spec=spec)
         data = painter.paint()
         data = painter.paint()
 
 
         logger.debug('start_time=%s end_time=%s interval= %s chnames=%s quality=%s card_type=%s amount=%s',
         logger.debug('start_time=%s end_time=%s interval= %s chnames=%s quality=%s card_type=%s amount=%s',
@@ -44,10 +44,18 @@ def channelratio():
         logger.error(ex)
         logger.error(ex)
     return None
     return None
 
 
+
 if __name__ == "__main__":
 if __name__ == "__main__":
-    app.run(debug=True)
-    # 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()
+    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()

+ 16 - 5
plot/refill/ChannelPainter.py

@@ -1,10 +1,21 @@
-from .DataStream import EChPosmap as pos_map
+from .DataStream import EChPosmap as pos_map,day_stamp,span_days
+from .ChannelReader import ChannelReader
 
 
 class ChannelPainter(object):
 class ChannelPainter(object):
-    default_options = {
-    }
+    def __init__(self,start_time, end_time, interval, chnames, card_type, spec):
+        self._start_time, self._end_time, self._interval, self._chnames, self._card_type, self._spec = start_time, end_time, interval, chnames, card_type, spec
+        self._days = span_days(start_time,end_time)
+
+        reader = ChannelReader()
+        if len(chnames) == 0:
+            for day in self._days:
+
 
 
-    def __init__(self,**kwargs):
         pass
         pass
-    def paint(self,**kwargs):
+
+    def paint(self):
+
+        for day in self._days:
+
+
         pass
         pass

+ 3 - 0
plot/refill/ChannelReader.py

@@ -19,6 +19,9 @@ class ChannelReader(DataReadStream):
         super(ChannelReader, self).__del__()
         super(ChannelReader, self).__del__()
         pass
         pass
 
 
+    def path(self, day, chnames, card_type = None, spec = None):
+
+
     def read(self, path):
     def read(self, path):
         pass
         pass
     pass
     pass

+ 26 - 1
plot/refill/DataStream.py

@@ -5,7 +5,7 @@ import h5py
 from enum import IntEnum
 from enum import IntEnum
 import threading
 import threading
 
 
-__all__ = ['DataWriteStream', 'DataReadStream', 'day_stamp', 'EMchPosmap', 'EChPosmap', 'ENetPosmap', 'open_hdf5']
+__all__ = ['DataWriteStream', 'DataReadStream', 'day_stamp', 'EMchPosmap', 'EChPosmap', 'ENetPosmap', 'open_hdf5','time_border']
 
 
 import logging
 import logging
 log = logging.getLogger('stream')
 log = logging.getLogger('stream')
@@ -28,6 +28,31 @@ def open_hdf5(file, is_wirte):
         return h5py.File(file, 'r')
         return h5py.File(file, 'r')
 
 
 
 
+def time_border(interval, time_stamp, lt):
+    day = day_stamp(time_stamp)
+    pos = time_stamp - day
+
+    if lt:
+        pos = pos - pos % interval
+    elif pos % interval > 0:
+        pos += interval - pos % interval
+    else:
+        pos = pos
+
+    return pos + day
+
+def span_days(start_time,end_time):
+    start_day = day_stamp(start_time)
+    end_time = day_stamp(end_time)
+
+    days = list()
+    if start_day <= end_time:
+        days.append(start_day)
+        start_day += 86400
+
+    return days
+
+
 class DataWriteStream(metaclass=ABCMeta):
 class DataWriteStream(metaclass=ABCMeta):
     _version = 20200618
     _version = 20200618
     _paths = dict()
     _paths = dict()

+ 2 - 2
plot/refill/__init__.py

@@ -1,6 +1,6 @@
 
 
 from .QueueListener import queueListener
 from .QueueListener import queueListener
-from .DataStream import DataWriteStream,DataReadStream,open_hdf5,day_stamp
+from .DataStream import DataWriteStream,DataReadStream,open_hdf5,day_stamp,time_border
 from .MerchantWriter import MerchantWriter
 from .MerchantWriter import MerchantWriter
 from .ChannelWriter import ChannelWriter
 from .ChannelWriter import ChannelWriter
 from .NetchkWriter import NetchkWriter
 from .NetchkWriter import NetchkWriter
@@ -15,4 +15,4 @@ __all__ = ['DataWriteStream', 'DataReadStream',
            'MerchantWriter', 'ChannelWriter','NetchkWriter',
            'MerchantWriter', 'ChannelWriter','NetchkWriter',
            'MerchantReader','NetchkReader','ChannelReader',
            'MerchantReader','NetchkReader','ChannelReader',
            'ChannelPainter',
            'ChannelPainter',
-           'queueListener','open_hdf5','day_stamp']
+           'queueListener','open_hdf5','day_stamp','time_border']

+ 16 - 13
plot/testPlot.py

@@ -2,12 +2,14 @@ import time
 import unittest
 import unittest
 import logging
 import logging
 
 
+from refill import time_border
+
 logging.basicConfig(filename='/var/www/html/data/log/qreader.log', level=logging.DEBUG)
 logging.basicConfig(filename='/var/www/html/data/log/qreader.log', level=logging.DEBUG)
 log = logging.getLogger('reader')
 log = logging.getLogger('reader')
 
 
 class MyTestCase(unittest.TestCase):
 class MyTestCase(unittest.TestCase):
-    # __redis_host = '192.168.3.104'
-    __redis_host = '192.168.3.46'
+    __redis_host = '192.168.3.104'
+    # __redis_host = '192.168.3.46'
     def test_something(self):
     def test_something(self):
         self.assertEqual(True, False)  # add assertion here
         self.assertEqual(True, False)  # add assertion here
 
 
@@ -20,10 +22,22 @@ class MyTestCase(unittest.TestCase):
             log.error(ex)
             log.error(ex)
         pass
         pass
 
 
+    def test_timestart(self):
+        stamp = int(time.time())
+        for i in range(300):
+            x = stamp + i
+            l = time_border(300,x,True)
+            r = time_border(300,x,False)
+            print('l=',l,'r=',r)
+
     def testDays(self):
     def testDays(self):
         from refill import MerchantReader
         from refill import MerchantReader
+        from refill import ChannelReader
 
 
         try:
         try:
+            chreader = ChannelReader()
+            chdays = chreader.days()
+
             reader = MerchantReader()
             reader = MerchantReader()
             days = reader.days()
             days = reader.days()
         except Exception as ex:
         except Exception as ex:
@@ -61,16 +75,5 @@ class MyTestCase(unittest.TestCase):
         person('Jack', 24, 'Beijing', job='Engineer')
         person('Jack', 24, 'Beijing', job='Engineer')
         person('Jack', 24, 'Beijing', 'Engineer')
         person('Jack', 24, 'Beijing', 'Engineer')
 
 
-    def test_kwargs(self):
-        def paint(**kwargs):
-            start_time = kwargs.setdefault('start_time',None)
-
-            pass
-
-        paint(start_time=time.time(),end_time = time.time() + 3600)
-
-
-
-
 if __name__ == '__main__':
 if __name__ == '__main__':
     unittest.main()
     unittest.main()