##// END OF EJS Templates
Update sender plots when loosing conn
Juan C. Espinoza -
r1302:5d9cc9fa8a36
parent child
Show More
@@ -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
@@ -163,6 +164,7 class Plot(Operation):
163 self.sender_time = 0
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):
@@ -570,42 +572,41 class Plot(Operation):
570
572
571 self.sender_time = self.data.tm
573 self.sender_time = self.data.tm
572
574
573 attrs = ['titles', 'zmin', 'zmax']
575 attrs = ['titles', 'zmin', 'zmax', 'colormap']
574 for attr in attrs:
576 for attr in attrs:
575 self.data.meta[attr] = getattr(self, attr)
577 value = getattr(self, attr)
578 if value is not None:
579 self.data.meta[attr] = getattr(self, attr)
576 self.data.meta['interval'] = int(interval)
580 self.data.meta['interval'] = int(interval)
577 retries = 2
581 msg = self.data.jsonify(self.plot_name, self.plot_type)
582 self.sender_queue.put(msg)
583
578 while True:
584 while True:
579 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())
580 socks = dict(self.poll.poll(5000))
588 socks = dict(self.poll.poll(5000))
581 if socks.get(self.socket) == zmq.POLLIN:
589 if socks.get(self.socket) == zmq.POLLIN:
582 reply = self.socket.recv_string()
590 reply = self.socket.recv_string()
583 if reply == 'ok':
591 if reply == 'ok':
584 log.log("Response from server ok", self.name)
592 log.log("Response from server ok", self.name)
585 break
593 time.sleep(0.1)
594 continue
586 else:
595 else:
587 log.warning(
596 log.warning(
588 "Malformed reply from server: {}".format(reply), self.name)
597 "Malformed reply from server: {}".format(reply), self.name)
589
590 else:
598 else:
591 log.warning(
599 log.warning(
592 "No response from server, retrying...", self.name)
600 "No response from server, retrying...", self.name)
601 self.sender_queue.put(msg)
593 self.socket.setsockopt(zmq.LINGER, 0)
602 self.socket.setsockopt(zmq.LINGER, 0)
594 self.socket.close()
603 self.socket.close()
595 self.poll.unregister(self.socket)
604 self.poll.unregister(self.socket)
596 retries -= 1
605 time.sleep(0.1)
597 if retries == 0:
598 log.error(
599 "Server seems to be offline, abandoning", self.name)
600 self.socket = self.context.socket(zmq.REQ)
601 self.socket.connect(self.plot_server)
602 self.poll.register(self.socket, zmq.POLLIN)
603 time.sleep(1)
604 break
605 self.socket = self.context.socket(zmq.REQ)
606 self.socket = self.context.socket(zmq.REQ)
606 self.socket.connect(self.plot_server)
607 self.socket.connect(self.plot_server)
607 self.poll.register(self.socket, zmq.POLLIN)
608 self.poll.register(self.socket, zmq.POLLIN)
608 time.sleep(0.5)
609 break
609
610
610 def setup(self):
611 def setup(self):
611 '''
612 '''
General Comments 0
You need to be logged in to leave comments. Login now