##// END OF EJS Templates
Update styles and add reports views
Update styles and add reports views

File last commit:

r36:18bc7709d51a
r47:39718a68f23c
Show More
client.py
117 lines | 3.7 KiB | text/x-python | PythonLexer
Juan C. Espinoza
Better test client & server
r17 #!/usr/bin/python
# -*- coding: UTF-8 -*-
import time
from datetime import datetime, timedelta
import zmq
import json
import numpy as np
import argparse
Juan C. Espinoza
Fis zmq server & test client
r20 REQUEST_TIMEOUT = 5000
Juan C. Espinoza
Work with static images, fix styles, fix default values in forms
r36 RETRIES = 2
Juan C. Espinoza
Better test client & server
r17 SERVER_ENDPOINT = 'tcp://localhost:4444'
Juan C. Espinoza
Test Version
r22
Juan C. Espinoza
Fis zmq server & test client
r20 def send(dato):
Juan C. Espinoza
server & client OK
r19 '''
Function to send data to server
'''
Juan C. Espinoza
Test Version
r22 context = zmq.Context()
socket = context.socket(zmq.REQ)
lrodriguez
Fixed bug to send data & PEP8 style code
r24 socket.connect(SERVER_ENDPOINT)
Juan C. Espinoza
Test Version
r22 poll = zmq.Poller()
poll.register(socket, zmq.POLLIN)
lrodriguez
Fixed bug to send data & PEP8 style code
r24 retries = RETRIES
Juan C. Espinoza
Better test client & server
r17 while True:
Juan C. Espinoza
Test version ready
r27 print(dato['plot'])
Juan C. Espinoza
Work with static images, fix styles, fix default values in forms
r36 socket.send_string(json.dumps(dato))
Juan C. Espinoza
Better test client & server
r17 socks = dict(poll.poll(REQUEST_TIMEOUT))
if socks.get(socket) == zmq.POLLIN:
reply = socket.recv_string()
Juan C. Espinoza
Update jroplots.js
r31 if reply == 'ok':
print(('Server replied (%s)' % reply))
Juan C. Espinoza
Better test client & server
r17 break
else:
Juan C. Espinoza
Test Version
r22 print(('Malformed reply from server: %s' % reply))
Juan C. Espinoza
Better test client & server
r17 else:
Juan C. Espinoza
Test Version
r22 print(('No response from server, retries left {}'.format(retries)))
Juan C. Espinoza
Fis zmq server & test client
r20 socket.setsockopt(zmq.LINGER, 0)
socket.close()
poll.unregister(socket)
retries -= 1
if retries == 0:
print('Server seems to be offline...')
Juan C. Espinoza
Better test client & server
r17 socket = context.socket(zmq.REQ)
socket.connect(SERVER_ENDPOINT)
poll.register(socket, zmq.POLLIN)
Juan C. Espinoza
Fis zmq server & test client
r20 break
# Create new connection
socket = context.socket(zmq.REQ)
socket.connect(SERVER_ENDPOINT)
poll.register(socket, zmq.POLLIN)
Juan C. Espinoza
Better test client & server
r17
lrodriguez
Fixed bug to send data & PEP8 style code
r24
Juan C. Espinoza
Better test client & server
r17 def main(realtime, code, date=None, interval=30):
Juan C. Espinoza
server & client OK
r19 '''
Simulate data to be sended to server
'''
Juan C. Espinoza
Better test client & server
r17
while True:
Juan C. Espinoza
Work with static images, fix styles, fix default values in forms
r36 if realtime:
dt = datetime.now()
else:
dt = date
Juan C. Espinoza
Test Version
r22 print(('Sending {} - {}'.format(code, dt)))
Juan C. Espinoza
Better test client & server
r17
Juan C. Espinoza
Test version ready
r27 data = {
'pcolor': ('Spectra', np.round(np.random.rand(4, 60, 100)*5 + 10, 2).tolist()),
'pcolorbuffer': ('RTI', np.round(np.random.rand(4, 100)*5 + 10, 2).tolist()),
Juan C. Espinoza
Update jroplots.js
r31 'scatterbuffer': ('Power noise', np.round(np.random.rand(4, 1) + np.array([[10],[11],[12],[13]]), 2).tolist())
Juan C. Espinoza
Test version ready
r27 }
Juan C. Espinoza
Better test client & server
r17 dato = {
Juan C. Espinoza
Work with static images, fix styles, fix default values in forms
r36 'time': (datetime.utcnow()-datetime(1970,1,1)).total_seconds(),
lrodriguez
Fixed bug to send data & PEP8 style code
r24 'metadata': {
Juan C. Espinoza
Test Version
r22 'yrange': np.arange(80, 120, 40/100.).tolist(),
'xrange': np.arange(-30, 30).tolist(),
'localtime': True,
Juan C. Espinoza
Test version ready
r27 'type': '',
Juan C. Espinoza
Work with static images, fix styles, fix default values in forms
r36 'interval': interval,
Juan C. Espinoza
Test Version
r22 },
Juan C. Espinoza
Test version ready
r27 'code': code,
Juan C. Espinoza
Test Version
r22 }
lrodriguez
Fixed bug to send data & PEP8 style code
r24
Juan C. Espinoza
Work with static images, fix styles, fix default values in forms
r36
Juan C. Espinoza
Test Version
r22 for plot, d in data.items():
Juan C. Espinoza
Test version ready
r27 dato['plot'] = d[0]
dato['metadata']['type'] = plot
dato['data'] = d[1]
send(dato)
Juan C. Espinoza
Work with static images, fix styles, fix default values in forms
r36
Juan C. Espinoza
Better test client & server
r17 if realtime:
time.sleep(interval)
else:
Juan C. Espinoza
Work with static images, fix styles, fix default values in forms
r36 dt = dt + timedelta(seconds=interval)
time.sleep(2)
Juan C. Espinoza
Better test client & server
r17
Juan C. Espinoza
Fis zmq server & test client
r20 if __name__ == '__main__':
lrodriguez
Fixed bug to send data & PEP8 style code
r24 parser = argparse.ArgumentParser(description='''This is a Client for
realtime app''')
parser.add_argument('--date', action='store', default=None,
help='format: 2018/02/13 12:23:00')
parser.add_argument('-r', action='store_true', dest='realtime',
default=None)
Juan C. Espinoza
Test Version
r22 parser.add_argument('-c', action='store', dest='code', default='172')
lrodriguez
Fixed bug to send data & PEP8 style code
r24 parser.add_argument('-i', action='store', dest='interval', type=int,
default=30)
Juan C. Espinoza
Better test client & server
r17
results = parser.parse_args()
if not results.realtime:
try:
results.date = datetime.strptime(results.date, '%Y/%m/%d %H:%M:%S')
except:
lrodriguez
Fixed bug to send data & PEP8 style code
r24 raise NameError('''You must specify a date (--date)
for non-realtime experiment''')
Juan C. Espinoza
Better test client & server
r17 main(results.realtime, results.code, results.date, results.interval)