예제 #1
0
    def run(self):
        acceptors = []
        for sock in self.sockets:
            gsock = GreenSocket(sock)
            gsock.setblocking(1)
            hfun = partial(self.handle, gsock)
            acceptor = eventlet.spawn(_eventlet_serve, gsock, hfun,
                                      self.worker_connections)

            acceptors.append(acceptor)
            eventlet.sleep(0.0)

        while self.alive:
            self.notify()
            eventlet.sleep(1.0)

        self.notify()
        try:
            with eventlet.Timeout(self.cfg.graceful_timeout) as t:
                for a in acceptors:
                    a.kill(eventlet.StopServe())
                for a in acceptors:
                    a.wait()
        except eventlet.Timeout as te:
            if te != t:
                raise
            for a in acceptors:
                a.kill()
예제 #2
0
    def handle(self, listener, client, addr):
        if self.cfg.is_ssl:
            client = eventlet.wrap_ssl(client, server_side=True,
                **self.cfg.ssl_options)

        super(EventletWorker, self).handle(listener, client, addr)

        if not self.alive:
            raise eventlet.StopServe()
예제 #3
0
 def stop(self):
     for node in list(self.nodes):
         self.sendDisconnect(node)
     with Timeout(.5, False):
         self.waitForNobodyConnected()
     if self.lsock is not None:
         self.lsock.close()
         self.lsock = None
     for node in list(self.nodes):
         self.closeConnection(node)
     if self.loop is not None:
         self.loop.kill(eventlet.StopServe())
예제 #4
0
 def stopit(conn, addr):
     raise eventlet.StopServe()
예제 #5
0
 def handle(sock, addr):
     sock.sendall(sock.recv(1024))
     raise eventlet.StopServe()
예제 #6
0
 def handle(sock, addr):
     sock.recv(1)
     sock.sendall(b"a")
     raise eventlet.StopServe()
예제 #7
0
 def stop(self):
     eventlet.StopServe()
예제 #8
0
 def doStop(self):
     raise eventlet.StopServe()