예제 #1
0
def test_pubsub_composite():
    endpoint = random_ipc_endpoint()
    trigger = gevent.event.Event()

    class Subscriber(object):
        def lolita(self, a, b):
            print('lolita', a, b)
            assert a + b == 3
            trigger.set()

    publisher = zerorpc.Publisher()
    publisher.bind(endpoint)

    service = Subscriber()
    subscriber = zerorpc.Subscriber(service)
    subscriber.connect(endpoint)
    gevent.spawn(subscriber.run)

    trigger.clear()
    # We need this retry logic to wait that the subscriber.run coroutine starts
    # reading (the published messages will go to /dev/null until then).
    for attempt in range(0, 10):
        publisher.lolita(1, 2)
        if trigger.wait(0.2):
            print('done')
            return

    raise RuntimeError("The subscriber didn't receive any published message")
예제 #2
0
def main(dataset, model, algorithm, async_process, batch_size, learning_rate,
         lamda, beta, num_glob_iters, local_epochs, optimizer, data_load,
         index):
    if async_process is True:
        init_client(dataset, model, algorithm, async_process, batch_size,
                    learning_rate, lamda, beta, num_glob_iters, local_epochs,
                    optimizer, data_load, index)
    else:
        client = zerorpc.Subscriber(
            ClientSub(dataset, model, algorithm, async_process, batch_size,
                      learning_rate, lamda, beta, num_glob_iters, local_epochs,
                      optimizer, data_load, index))
        client.connect('tcp://127.0.0.1:8889')
        client.run()
예제 #3
0
def test_task_context_pubsub():
    endpoint = random_ipc_endpoint()
    subscriber_ctx = zerorpc.Context()
    publisher_ctx = zerorpc.Context()

    subscriber_tracer = Tracer('[subscriber]')
    subscriber_ctx.register_middleware(subscriber_tracer)
    publisher_tracer = Tracer('[publisher]')
    publisher_ctx.register_middleware(publisher_tracer)

    trigger = gevent.event.Event()

    class Subscriber:
        def echo(self, msg):
            trigger.set()

    subscriber = zerorpc.Subscriber(Subscriber(), context=subscriber_ctx)
    subscriber.bind(endpoint)
    subscriber_task = gevent.spawn(subscriber.run)

    c = zerorpc.Publisher(context=publisher_ctx)
    c.connect(endpoint)

    trigger.clear()
    # We need this retry logic to wait that the subscriber.run coroutine starts
    # reading (the published messages will go to /dev/null until then).
    for attempt in xrange(0, 10):
        c.echo('pub...')
        if trigger.wait(0.2):
            break

    subscriber.stop()
    subscriber_task.join()

    assert publisher_tracer._log == [
        ('new', publisher_tracer.trace_id),
    ]
    assert subscriber_tracer._log == [
        ('load', publisher_tracer.trace_id),
    ]
예제 #4
0
def test_pubsub_composite():
    endpoint = random_ipc_endpoint()
    trigger = gevent.event.Event()

    class Subscriber(object):
        def lolita(self, a, b):
            print 'lolita', a, b
            assert a + b == 3
            trigger.set()

    publisher = zerorpc.Publisher()
    publisher.bind(endpoint)

    service = Subscriber()
    subscriber = zerorpc.Subscriber(service)
    subscriber.connect(endpoint)
    gevent.spawn(subscriber.run)

    trigger.clear()
    publisher.lolita(1, 2)
    trigger.wait()
    print 'done'
예제 #5
0
def test_task_context_pubsub():
    subscriber_ctx = zerorpc.Context()
    publisher_ctx = zerorpc.Context()

    subscriber_tracer = Tracer('[subscriber]')
    subscriber_ctx.register_middleware(subscriber_tracer)
    publisher_tracer = Tracer('[publisher]')
    publisher_ctx.register_middleware(publisher_tracer)

    trigger = gevent.event.Event()

    class Subscriber(object):
        def echo(self, msg):
            trigger.set()

    subscriber = zerorpc.Subscriber(Subscriber(), context=subscriber_ctx)
    subscriber.bind(endpoint)
    subscriber_task = gevent.spawn(subscriber.run)

    c = zerorpc.Publisher(context=publisher_ctx)
    c.connect(endpoint)

    trigger.clear()
    # We need this retry logic to wait that the subscriber.run coroutine starts
    # reading (the published messages will go to /dev/null until then).
    while not trigger.is_set():
        c.echo('pub...')
        if trigger.wait(TIME_FACTOR * 1):
            break

    subscriber.stop()
    subscriber_task.join()

    print(publisher_tracer._log)
    assert ('new', publisher_tracer.trace_id) in publisher_tracer._log
    print(subscriber_tracer._log)
    assert ('load', publisher_tracer.trace_id) in subscriber_tracer._log
def test_task_context_pubsub():
    endpoint = random_ipc_endpoint()
    subscriber_ctx = zerorpc.Context()
    publisher_ctx = zerorpc.Context()

    subscriber_tracer = Tracer('[subscriber]')
    subscriber_ctx.register_middleware(subscriber_tracer)
    publisher_tracer = Tracer('[publisher]')
    publisher_ctx.register_middleware(publisher_tracer)

    trigger = gevent.event.Event()

    class Subscriber:
        def echo(self, msg):
            trigger.set()

    subscriber = zerorpc.Subscriber(Subscriber(), context=subscriber_ctx)
    subscriber.bind(endpoint)
    subscriber_task = gevent.spawn(subscriber.run)

    c = zerorpc.Publisher(context=publisher_ctx)
    c.connect(endpoint)

    trigger.clear()
    c.echo('pub...')
    trigger.wait()

    subscriber.stop()
    subscriber_task.join()

    assert publisher_tracer._log == [
        ('new', publisher_tracer.trace_id),
    ]
    assert subscriber_tracer._log == [
        ('load', publisher_tracer.trace_id),
    ]