@@ -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 |
@@ -163,6 +164,7 class Plot(Operation): | |||
|
163 | 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): |
@@ -570,42 +572,41 class Plot(Operation): | |||
|
570 | 572 | |
|
571 | 573 | self.sender_time = self.data.tm |
|
572 | 574 | |
|
573 | attrs = ['titles', 'zmin', 'zmax'] | |
|
575 | attrs = ['titles', 'zmin', 'zmax', 'colormap'] | |
|
574 | 576 | for attr in attrs: |
|
575 |
|
|
|
577 | value = getattr(self, attr) | |
|
578 | if value is not None: | |
|
579 | self.data.meta[attr] = getattr(self, attr) | |
|
576 | 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 | 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 | 588 | socks = dict(self.poll.poll(5000)) |
|
581 | 589 | if socks.get(self.socket) == zmq.POLLIN: |
|
582 | 590 | reply = self.socket.recv_string() |
|
583 | 591 | if reply == 'ok': |
|
584 | 592 | log.log("Response from server ok", self.name) |
|
585 |
|
|
|
593 | time.sleep(0.1) | |
|
594 | continue | |
|
586 | 595 | else: |
|
587 | 596 | log.warning( |
|
588 | 597 | "Malformed reply from server: {}".format(reply), self.name) |
|
589 | ||
|
590 | 598 | else: |
|
591 | 599 | log.warning( |
|
592 | 600 | "No response from server, retrying...", self.name) |
|
601 | self.sender_queue.put(msg) | |
|
593 | 602 | self.socket.setsockopt(zmq.LINGER, 0) |
|
594 | 603 | self.socket.close() |
|
595 | 604 | self.poll.unregister(self.socket) |
|
596 | retries -= 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 | time.sleep(0.1) | |
|
605 | 606 | self.socket = self.context.socket(zmq.REQ) |
|
606 | 607 | self.socket.connect(self.plot_server) |
|
607 | 608 | self.poll.register(self.socket, zmq.POLLIN) |
|
608 | time.sleep(0.5) | |
|
609 | break | |
|
609 | 610 | |
|
610 | 611 | def setup(self): |
|
611 | 612 | ''' |
General Comments 0
You need to be logged in to leave comments.
Login now