def publish_cfg_msg(trie, node_id, addr=None): """ Publish node cfg message (to root node) with network ID to join. Node data is already populated in the ID trie. :param trie: `id_trie` state trie :param node_id: ID of mbr node to configure :param addr: IP address of subscriber """ import time from nanoservice import Publisher from node_tools.msg_queues import make_cfg_msg if NODE_SETTINGS['use_localhost'] or not addr: addr = '127.0.0.1' pub = Publisher('tcp://{}:9442'.format(addr)) # Need to wait a bit on connect to prevent lost messages time.sleep(0.002) msg = make_cfg_msg(trie, node_id) pub.publish('cfg_msgs', msg) logger.debug('CFG: sent cfg msg {} for node {} to {}'.format( msg, node_id, addr))
def drain_msg_queue(reg_q, pub_q=None, tmp_q=None, addr=None, method='handle_node'): """ This function now handles several different methods; note the optional queue params should not be used together. :param reg_q: queue of registered nodes :param pub_q: queue of published nodes (use for publishing online nodes) :param tmp_q: queue of nodes/addrs for logging (use for publishing offline nodes) """ import time from nanoservice import Publisher from node_tools.msg_queues import add_one_only if NODE_SETTINGS['use_localhost'] or not addr: addr = '127.0.0.1' pub = Publisher('tcp://{}:9442'.format(addr)) id_list = list(reg_q) # Need to wait a bit on connect to prevent lost messages time.sleep(0.002) for _ in id_list: with reg_q.transact(): node_id = reg_q.popleft() pub.publish(method, node_id) if pub_q is not None: with pub_q.transact(): add_one_only(node_id, pub_q) logger.debug('Published msg {} to {}'.format(node_id, addr))
def run(N, addr): # Fork service service_process = Process(target=start_service, args=(addr, N)) service_process.start() time.sleep(0.5) # Wait for service connect # Create client and make reqs c = Publisher(addr) bench(c, N) c.socket.close() time.sleep(1) service_process.terminate()
def send_pub_msg(addr, method, data): """ """ import time from nanoservice import Publisher if NODE_SETTINGS['use_localhost'] or not addr: addr = '127.0.0.1' pub = Publisher('tcp://{}:9442'.format(addr)) # Need to wait a bit on connect to prevent lost messages time.sleep(0.002) pub.publish(method, data) logger.debug('PUB: sent {} msg with paylod {} to {}'.format( method, data, addr))
def setUp(self): self.addr = 'inproc://test' self.client = Publisher(self.addr) self.service = Subscriber(self.addr) self.service.subscribe('upper', lambda line: line.upper()) self.service.subscribe('lower', lambda line: line.lower())
from nanoservice import Publisher import time p = Publisher('ipc:///tmp/pubsub-service.sock') # Need to wait a bit to prevent lost messages time.sleep(0.001) p.publish('log_line', 'hello world') p.publish('cap_line', 'this is uppercase')
import time from nanoservice import Publisher name = 'pub2' p = Publisher('ipc:///tmp/pub2.sock', bind=True) while True: time.sleep(1) p.publish('log', 'Hello from {} at: {}'.format(name, time.time()))
import time from nanoservice import Publisher addr = '127.0.0.1' # addr = 'whatever' pub_id = Publisher('tcp://{}:9442'.format(addr)) id_list = ['deadbeef00', 'deadbeef04', 'deadbeef03', 'deadbeef02', 'deadbeef01'] # Need to wait a bit to prevent lost messages time.sleep(0.001) for node_id in id_list: pub_id.publish('handle_node', node_id) print('Published msg {}'.format(node_id))