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
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)
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)
@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)
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()
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()