##// 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 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 156 kwargs = self.getKwargs()
157 157 opObj = className(self.id, self.id, self.project_id, self.err_queue, **kwargs)
158 158 opObj.start()
@@ -1109,8 +1109,8 class PlotterData(object):
1109 1109 Object to hold data to be plotted
1110 1110 '''
1111 1111
1112 MAXNUMX = 100
1113 MAXNUMY = 100
1112 MAXNUMX = 200
1113 MAXNUMY = 200
1114 1114
1115 1115 def __init__(self, code, throttle_value, exp_code, buffering=True, snr=False):
1116 1116
@@ -1332,9 +1332,10 class PlotterData(object):
1332 1332 data = self.roundFloats(
1333 1333 self.data[self.key][::, ::dx, ::dy].tolist())
1334 1334 else:
1335 data = self.roundFloats(self.data[self.key][tm].tolist())
1336 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 1340 meta = {}
1340 1341 ret = {
@@ -5,6 +5,7 import zmq
5 5 import time
6 6 import numpy
7 7 import datetime
8 from queue import Queue
8 9 from functools import wraps
9 10 from threading import Thread
10 11 import matplotlib
@@ -160,9 +161,10 class Plot(Operation):
160 161 self.isConfig = False
161 162 self.isPlotConfig = False
162 163 self.save_counter = 1
163 self.sender_counter = 1
164 self.sender_time = 0
164 165 self.data = None
165 166 self.firsttime = True
167 self.sender_queue = Queue(maxsize=10)
166 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 170 def __fmtTime(self, x, pos):
@@ -225,7 +227,7 class Plot(Operation):
225 227 self.throttle = kwargs.get('throttle', 0)
226 228 self.exp_code = kwargs.get('exp_code', None)
227 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 231 self.height_index = kwargs.get('height_index', None)
230 232 self.__throttle_plot = apply_throttle(self.throttle)
231 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:
568 self.sender_counter += 1
569 interval = self.data.tm - self.sender_time
570 if interval < self.sender_period:
569 571 return
570 572
571 self.sender_counter = 1
572 self.data.meta['titles'] = self.titles
573 retries = 2
573 self.sender_time = self.data.tm
574
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 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 588 socks = dict(self.poll.poll(5000))
577 589 if socks.get(self.socket) == zmq.POLLIN:
578 590 reply = self.socket.recv_string()
579 591 if reply == 'ok':
580 592 log.log("Response from server ok", self.name)
581 break
593 time.sleep(0.1)
594 continue
582 595 else:
583 596 log.warning(
584 597 "Malformed reply from server: {}".format(reply), self.name)
585
586 598 else:
587 599 log.warning(
588 600 "No response from server, retrying...", self.name)
601 self.sender_queue.put(msg)
589 602 self.socket.setsockopt(zmq.LINGER, 0)
590 603 self.socket.close()
591 604 self.poll.unregister(self.socket)
592 retries -= 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)
597 self.socket.connect(self.plot_server)
598 self.poll.register(self.socket, zmq.POLLIN)
599 time.sleep(1)
600 break
605 time.sleep(0.1)
601 606 self.socket = self.context.socket(zmq.REQ)
602 607 self.socket.connect(self.plot_server)
603 608 self.poll.register(self.socket, zmq.POLLIN)
604 time.sleep(0.5)
609 break
605 610
606 611 def setup(self):
607 612 '''
General Comments 0
You need to be logged in to leave comments. Login now