##// END OF EJS Templates
Merge branch 'v3.0-devel' of http://jro-dev.igp.gob.pe/rhodecode/schain into v3.0-devel
avaldez -
r1304:865648b7218f merge
parent child
Show More
@@ -152,7 +152,7 class OperationConf(ConfBase):
152
152
153 className = eval(self.name)
153 className = eval(self.name)
154
154
155 if 'Plot' in self.name or 'Writer' in self.name:
155 if 'Plot' in self.name or 'Writer' in self.name or 'Send' in self.name:
156 kwargs = self.getKwargs()
156 kwargs = self.getKwargs()
157 opObj = className(self.id, self.id, self.project_id, self.err_queue, **kwargs)
157 opObj = className(self.id, self.id, self.project_id, self.err_queue, **kwargs)
158 opObj.start()
158 opObj.start()
@@ -1109,8 +1109,8 class PlotterData(object):
1109 Object to hold data to be plotted
1109 Object to hold data to be plotted
1110 '''
1110 '''
1111
1111
1112 MAXNUMX = 100
1112 MAXNUMX = 200
1113 MAXNUMY = 100
1113 MAXNUMY = 200
1114
1114
1115 def __init__(self, code, throttle_value, exp_code, buffering=True, snr=False):
1115 def __init__(self, code, throttle_value, exp_code, buffering=True, snr=False):
1116
1116
@@ -1332,9 +1332,10 class PlotterData(object):
1332 data = self.roundFloats(
1332 data = self.roundFloats(
1333 self.data[self.key][::, ::dx, ::dy].tolist())
1333 self.data[self.key][::, ::dx, ::dy].tolist())
1334 else:
1334 else:
1335 data = self.roundFloats(self.data[self.key][tm].tolist())
1336 if self.key is 'noise':
1335 if self.key is 'noise':
1337 data = [[x] for x in data]
1336 data = [[x] for x in self.roundFloats(self.data[self.key][tm].tolist())]
1337 else:
1338 data = self.roundFloats(self.data[self.key][tm][::, ::dy].tolist())
1338
1339
1339 meta = {}
1340 meta = {}
1340 ret = {
1341 ret = {
@@ -5,6 +5,7 import zmq
5 import time
5 import time
6 import numpy
6 import numpy
7 import datetime
7 import datetime
8 from queue import Queue
8 from functools import wraps
9 from functools import wraps
9 from threading import Thread
10 from threading import Thread
10 import matplotlib
11 import matplotlib
@@ -160,9 +161,10 class Plot(Operation):
160 self.isConfig = False
161 self.isConfig = False
161 self.isPlotConfig = False
162 self.isPlotConfig = False
162 self.save_counter = 1
163 self.save_counter = 1
163 self.sender_counter = 1
164 self.sender_time = 0
164 self.data = None
165 self.data = None
165 self.firsttime = True
166 self.firsttime = True
167 self.sender_queue = Queue(maxsize=10)
166 self.plots_adjust = {'left': 0.125, 'right': 0.9, 'bottom': 0.15, 'top': 0.9, 'wspace': 0.2, 'hspace': 0.2}
168 self.plots_adjust = {'left': 0.125, 'right': 0.9, 'bottom': 0.15, 'top': 0.9, 'wspace': 0.2, 'hspace': 0.2}
167
169
168 def __fmtTime(self, x, pos):
170 def __fmtTime(self, x, pos):
@@ -225,7 +227,7 class Plot(Operation):
225 self.throttle = kwargs.get('throttle', 0)
227 self.throttle = kwargs.get('throttle', 0)
226 self.exp_code = kwargs.get('exp_code', None)
228 self.exp_code = kwargs.get('exp_code', None)
227 self.plot_server = kwargs.get('plot_server', False)
229 self.plot_server = kwargs.get('plot_server', False)
228 self.sender_period = kwargs.get('sender_period', 1)
230 self.sender_period = kwargs.get('sender_period', 60)
229 self.height_index = kwargs.get('height_index', None)
231 self.height_index = kwargs.get('height_index', None)
230 self.__throttle_plot = apply_throttle(self.throttle)
232 self.__throttle_plot = apply_throttle(self.throttle)
231 self.data = PlotterData(
233 self.data = PlotterData(
@@ -564,44 +566,47 class Plot(Operation):
564 '''
566 '''
565 '''
567 '''
566
568
567 if self.sender_counter < self.sender_period:
569 interval = self.data.tm - self.sender_time
568 self.sender_counter += 1
570 if interval < self.sender_period:
569 return
571 return
570
572
571 self.sender_counter = 1
573 self.sender_time = self.data.tm
572 self.data.meta['titles'] = self.titles
574
573 retries = 2
575 attrs = ['titles', 'zmin', 'zmax', 'colormap']
576 for attr in attrs:
577 value = getattr(self, attr)
578 if value is not None:
579 self.data.meta[attr] = getattr(self, attr)
580 self.data.meta['interval'] = int(interval)
581 msg = self.data.jsonify(self.plot_name, self.plot_type)
582 self.sender_queue.put(msg)
583
574 while True:
584 while True:
575 self.socket.send_string(self.data.jsonify(self.plot_name, self.plot_type))
585 if self.sender_queue.empty():
586 break
587 self.socket.send_string(self.sender_queue.get())
576 socks = dict(self.poll.poll(5000))
588 socks = dict(self.poll.poll(5000))
577 if socks.get(self.socket) == zmq.POLLIN:
589 if socks.get(self.socket) == zmq.POLLIN:
578 reply = self.socket.recv_string()
590 reply = self.socket.recv_string()
579 if reply == 'ok':
591 if reply == 'ok':
580 log.log("Response from server ok", self.name)
592 log.log("Response from server ok", self.name)
581 break
593 time.sleep(0.1)
594 continue
582 else:
595 else:
583 log.warning(
596 log.warning(
584 "Malformed reply from server: {}".format(reply), self.name)
597 "Malformed reply from server: {}".format(reply), self.name)
585
586 else:
598 else:
587 log.warning(
599 log.warning(
588 "No response from server, retrying...", self.name)
600 "No response from server, retrying...", self.name)
601 self.sender_queue.put(msg)
589 self.socket.setsockopt(zmq.LINGER, 0)
602 self.socket.setsockopt(zmq.LINGER, 0)
590 self.socket.close()
603 self.socket.close()
591 self.poll.unregister(self.socket)
604 self.poll.unregister(self.socket)
592 retries -= 1
605 time.sleep(0.1)
593 if retries == 0:
594 log.error(
595 "Server seems to be offline, abandoning", self.name)
596 self.socket = self.context.socket(zmq.REQ)
606 self.socket = self.context.socket(zmq.REQ)
597 self.socket.connect(self.plot_server)
607 self.socket.connect(self.plot_server)
598 self.poll.register(self.socket, zmq.POLLIN)
608 self.poll.register(self.socket, zmq.POLLIN)
599 time.sleep(1)
600 break
609 break
601 self.socket = self.context.socket(zmq.REQ)
602 self.socket.connect(self.plot_server)
603 self.poll.register(self.socket, zmq.POLLIN)
604 time.sleep(0.5)
605
610
606 def setup(self):
611 def setup(self):
607 '''
612 '''
General Comments 0
You need to be logged in to leave comments. Login now