##// END OF EJS Templates
Change PUB/SUB to REQ/REP for send data to web server
Juan C. Espinoza -
r1161:9b21f1781b2e
parent child
Show More
@@ -218,11 +218,10 class Data(object):
218 218
219 219 data = {}
220 220 tm = self.times[-1]
221
221 dy = int(self.heights.size/MAXNUMY) + 1
222 222 for key in self.data:
223 223 if key in ('spc', 'cspc'):
224 224 dx = int(self.data[key].shape[1]/MAXNUMX) + 1
225 dy = int(self.data[key].shape[2]/MAXNUMY) + 1
226 225 data[key] = roundFloats(self.data[key][::, ::dx, ::dy].tolist())
227 226 else:
228 227 data[key] = roundFloats(self.data[key][tm].tolist())
@@ -232,8 +231,8 class Data(object):
232 231 ret['time'] = tm
233 232 ret['interval'] = self.interval
234 233 ret['localtime'] = self.localtime
235 ret['yrange'] = roundFloats(self.heights.tolist())
236 if key in ('spc', 'cspc'):
234 ret['yrange'] = roundFloats(self.heights[::dy].tolist())
235 if 'spc' in self.data or 'cspc' in self.data:
237 236 ret['xrange'] = roundFloats(self.xrange[2][::dx].tolist())
238 237 else:
239 238 ret['xrange'] = []
@@ -577,8 +576,10 class PlotterReceiver(ProcessingUnit, Process):
577 576 'Sending to web: {}'.format(self.web_address),
578 577 self.name
579 578 )
580 self.sender_web = self.context.socket(zmq.PUB)
579 self.sender_web = self.context.socket(zmq.REQ)
581 580 self.sender_web.connect(self.web_address)
581 self.poll = zmq.Poller()
582 self.poll.register(self.sender_web, zmq.POLLIN)
582 583 time.sleep(1)
583 584
584 585 if 'server' in self.kwargs:
@@ -622,12 +623,37 class PlotterReceiver(ProcessingUnit, Process):
622 623 if self.connections == 0 and dt in self.dates:
623 624 self.data.ended = True
624 625 self.send(self.data)
625 self.data.setup()
626 # self.data.setup()
627 time.sleep(1)
628 break
626 629 else:
627 630 if self.realtime:
628 631 self.send(self.data)
629 632 if self.web_address:
630 self.sender_web.send(self.data.jsonify())
633 retries = 5
634 while True:
635 self.sender_web.send(self.data.jsonify())
636 socks = dict(self.poll.poll(5000))
637 if socks.get(self.sender_web) == zmq.POLLIN:
638 reply = self.sender_web.recv_string()
639 if reply == 'ok':
640 break
641 else:
642 print("Malformed reply from server: %s" % reply)
643
644 else:
645 print("No response from server, retrying...")
646 self.sender_web.setsockopt(zmq.LINGER, 0)
647 self.sender_web.close()
648 self.poll.unregister(self.sender_web)
649 retries -= 1
650 if retries == 0:
651 print("Server seems to be offline, abandoning")
652 break
653 self.sender_web = self.context.socket(zmq.REQ)
654 self.sender_web.connect(self.web_address)
655 self.poll.register(self.sender_web, zmq.POLLIN)
656 time.sleep(1)
631 657 else:
632 658 self.sendData(self.send, self.data, coerce=coerce)
633 659 coerce = False
General Comments 0
You need to be logged in to leave comments. Login now