#!/usr/bin/python # -*- coding: UTF-8 -*- import time from datetime import datetime, timedelta import zmq import json import random REQUEST_TIMEOUT = 15000 REQUEST_RETRIES = 10 SERVER_ENDPOINT = "tcp://localhost:4444" context = zmq.Context() #print("Connecting to server…") socket = context.socket(zmq.REQ) socket.connect (SERVER_ENDPOINT) print('Starting ZMQ client...') poll = zmq.Poller() poll.register(socket, zmq.POLLIN) sequence = 0 retries_left = REQUEST_RETRIES #dt=datetime(2018,5,15) #en vez de poner now() dt=datetime.now() while retries_left: sequence += 1 request = str(sequence).encode() print("HF_JRO: Sending (%s)" % request) #==== datos noise ========= n1 = random.uniform(20.0,20.2) n2 = random.uniform(21.0,21.3) n3 = random.uniform(22.0,22.2) n4 = random.uniform(23.0,23.2) n5 = random.uniform(24.0,24.2) n6 = random.uniform(25.0,25.3) n7 = random.uniform(26.0,26.2) n8 = random.uniform(27.0,27.2) #=== fin de datos noise === #==== datos rti =========== yrange = list(range(0,200,2)) elementos=[] while len(elementos)<=100: elementos.append(random.randint(15, 35)) #=== fin de datos rti ===== #==== datos spc =========== x_range = list(range(80)) matrix=[] while len(matrix)<=80: matrix.append(elementos) #=== fin de datos spc ===== dt1=dt+timedelta(seconds=30) #ahora voy a cambiar cada 30min ya no cada 30 segundos #dt1 = datetime.now() dato1 = {"time":time.mktime(dt1.timetuple()), "yrange": yrange, "xrange": x_range, "localtime": True, "interval": 30, "exp_code": 100, "data": {"noise":[n1, n2, n3, n4, n5, n6, n7, n8], "rti":[elementos,elementos,elementos,elementos,elementos,elementos,elementos,elementos], "spc":[matrix,matrix,matrix,matrix,matrix,matrix,matrix,matrix] } } #print("Sending..") dt = dt1 #=== para simular huecos === #if dt.hour in (3 ,4): # continue socket.send_json(dato1) expect_reply = True while expect_reply: socks = dict(poll.poll(REQUEST_TIMEOUT)) if socks.get(socket) == zmq.POLLIN: reply = socket.recv_string() if not reply: break if reply == "recibido": print("I: Server replied OK (%s)" % reply) retries_left = REQUEST_RETRIES expect_reply = False else: print("E: Malformed reply from server: %s" % reply) else: print("W: No response from server, retrying…") # Socket is confused. Close and remove it. socket.setsockopt(zmq.LINGER, 0) socket.close() poll.unregister(socket) retries_left -= 1 if retries_left == 0: print("E: Server seems to be offline, abandoning") break print("I: Reconnecting and resending (%s)" % request) # Create new connection socket = context.socket(zmq.REQ) socket.connect(SERVER_ENDPOINT) poll.register(socket, zmq.POLLIN) #socket.send(request) #time.sleep(5) time.sleep(30) context.term() #===================