Пример #1
0
def main():
    reactor.listenTCP(8000, EchoApp())

    num = cpu_count()
    if prefork(num): exit()

    reactor.run()
Пример #2
0
from gevent import fork
from prefork import prefork, cpu_count


def connection(env, start):
    ws = env["wsgi.websocket"]
    send, rcv = ws.send, ws.receive
    while True:
        send(rcv())


if __name__ == "__main__":
    addr = "0.0.0.0", 8000
    server = WSGIServer(addr, connection, handler_class=WebSocketHandler, log=None)

    # bind socket
    if hasattr(server, "pre_start"):
        server.pre_start()
    else:
        server.init_socket()

    num = cpu_count()
    print "Gevent + gevent-websocket (%s workers)" % (num + 1)
    prefork(num, fork=fork)  # gevent needs special fork

    try:
        server.serve_forever()
    except KeyboardInterrupt:
        server.stop()
Пример #3
0
from tornado.web        import Application
from tornado.websocket  import WebSocketHandler
from tornado.httpserver import HTTPServer
from tornado.netutil    import bind_sockets
from logging            import getLogger, CRITICAL
from prefork            import prefork, cpu_count

class EchoApp( Application ):
    def __init__(self):
        Application.__init__( self, [("/", WSHandler)] )

class WSHandler( WebSocketHandler ):
    def allow_draft76( self ):
        return False

    def on_message( self, message ):
        self.write_message( message, binary=True )

if __name__ == "__main__":
    getLogger().setLevel( CRITICAL )

    server  = HTTPServer( EchoApp() )
    sockets = bind_sockets( 8000, backlog=768 )

    num = cpu_count()
    print "Tornado (%s workers)" % num
    if prefork( num ): exit()

    server.add_sockets( sockets )
    IOLoop.instance().start()