Example #1
0
    def main(self, name, mesh, host, port, parent):
        """."""
        state = 'unconnected'
        sock = None
        to = 1
        up = False

        dataq = queue.Queue()
        last_heard_from = None

        while True:

            if state == 'unconnected':
                if sock is None:
                    sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

                sock.setTimeout(0.1)
                try:
                    sock.connect((host, port))
                except (socket.error, gevent.Timeout):
                    to = to + random.random() * self.variance
                else:
                    state = 'connected'
                    receiver = gevent.spawn_link(self.recv, sock, dataq)
                    sender = gevent.spawn_link(self.send, sock, dataq)
                    to = 0

                to = to + random.random() * self.variance

            if up and state != 'connected':
                if last_heard_from 

            try:
                pat, msg = self.receive(self.DIE, self.DATA,
                                        timeout=to)
            except gevent.LinkedExited:
                # Our receiver died for some reason.
                state, sock = 'unconnected', None
                continue
            else:
                if pat is self.DIE:
                    # The endgame.  Someone told us to die.
                    break
                elif pat is self.DATA:
                    pass
Example #2
0
    def main(self, name, mesh, host, port, parent):
        """."""
        state = 'unconnected'
        sock = None
        to = 1
        up = False

        dataq = queue.Queue()
        last_heard_from = None

        while True:

            if state == 'unconnected':
                if sock is None:
                    sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

                sock.setTimeout(0.1)
                try:
                    sock.connect((host, port))
                except (socket.error, gevent.Timeout):
                    to = to + random.random() * self.variance
                else:
                    state = 'connected'
                    receiver = gevent.spawn_link(self.recv, sock, dataq)
                    sender = gevent.spawn_link(self.send, sock, dataq)
                    to = 0

                to = to + random.random() * self.variance

            if up and state != 'connected':
                if last_heard_from 

            try:
                pat, msg = self.receive(self.DIE, self.DATA,
                                        timeout=to)
            except gevent.LinkedExited:
                # Our receiver died for some reason.
                state, sock = 'unconnected', None
                continue
            else:
                if pat is self.DIE:
                    # The endgame.  Someone told us to die.
                    break
                elif pat is self.DATA:
                    pass
Example #3
0
 def test_killing_unlinked(self):
     e = AsyncResult()
     def func():
         try:
             raise ExpectedError('test_killing_unlinked')
         except:
             e.set_exception(sys.exc_info()[1])
     p = gevent.spawn_link(func)
     try:
         try:
             e.wait()
         except ExpectedError:
             pass
     finally:
         p.unlink() # this disables LinkedCompleted that otherwise would be raised by the next line
     sleep(DELAY)
Example #4
0
    def test_killing_unlinked(self):
        e = AsyncResult()

        def func():
            try:
                raise ExpectedError('test_killing_unlinked')
            except:
                e.set_exception(sys.exc_info()[1])

        p = gevent.spawn_link(func)
        try:
            try:
                e.wait()
            except ExpectedError:
                pass
        finally:
            p.unlink(
            )  # this disables LinkedCompleted that otherwise would be raised by the next line
        sleep(DELAY)
Example #5
0
@ctx.sub.listen("inproc://testing", subs="two")
def print_differently(message):
    print "Subscriber two", message


@ctx.rep.listen("inproc://test-req", bind=False)
def ack_message(message):
    return ["Ack"] + message


with ctx.pub.bound(ctx.url_to(print_message)) as pub, ctx.req.bound(ctx.url_to(ack_message)) as req:

    def produce():
        while True:
            gevent.sleep(1)
            if random.random() < 0.5:
                pub.send(["one", str(random.random())])
            else:
                pub.send(["two", "Not random at all"])

    def request():
        while True:
            req.send(str(random.random()))
            gevent.sleep(1)
            print "Requestor", req.recv()

    greenlets = ctx.start(gevent.spawn_link)
    greenlets.append(gevent.spawn_link(produce))
    greenlets.append(gevent.spawn_link(request))
    gevent.joinall(greenlets)
Example #6
0
        except IOError, ex:
            print '%s:%s %s' % (peer[0], peer[1], ex)
        finally:
            self.sockets.discard(socket)

    def update(self):
        while True:
            now = datetime.now()
            message = '%s (%s client%s)' % (now, len(self.sockets), 's' if len(self.sockets) != 1 else '')
            start = time()
            for socket in list(self.sockets):
                self.pool.spawn(self.send, socket, message)
            sleep = 0.1 - (time() - start)
            if sleep > 0:
                gevent.sleep(sleep)
            else:
                print 'Skipped sleeping'


if __name__ == '__main__':
    from websocket.server import WebsocketServer
    PORT = 8000
    app = Application()
    updater = gevent.spawn_link(app.update)
    server = WebsocketServer(('', PORT), app)
    try:
        server.serve_forever()
    except KeyboardInterrupt:
        pass
    app.pool.join()
Example #7
0
            print '%s:%s %s' % (peer[0], peer[1], ex)
        finally:
            self.sockets.discard(socket)

    def update(self):
        while True:
            now = datetime.now()
            message = '%s (%s client%s)' % (now, len(
                self.sockets), 's' if len(self.sockets) != 1 else '')
            start = time()
            for socket in list(self.sockets):
                self.pool.spawn(self.send, socket, message)
            sleep = 0.1 - (time() - start)
            if sleep > 0:
                gevent.sleep(sleep)
            else:
                print 'Skipped sleeping'


if __name__ == '__main__':
    from websocket.server import WebsocketServer
    PORT = 8000
    app = Application()
    updater = gevent.spawn_link(app.update)
    server = WebsocketServer(('', PORT), app)
    try:
        server.serve_forever()
    except KeyboardInterrupt:
        pass
    app.pool.join()