# gevent

# Example echoserver.py

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37

    #!/usr/bin/env python
    """Simple server that listens on port 16000 and echos back every input to the client.

    Connect to it with:
      telnet 127.0.0.1 16000

    Terminate the connection by terminating telnet (typically Ctrl-] and then 'quit').
    """
    from __future__ import print_function
    from gevent.server import StreamServer

    # this handler will be run for each incoming connection in a dedicated greenlet
    def echo(socket, address):
        print('New connection from %s:%s' % address)
        socket.sendall(b'Welcome to the echo server! Type quit to exit.\r\n')
        # using a makefile because we want to use readline()
        rfileobj = socket.makefile(mode='rb')
        while True:
            line = rfileobj.readline()
            if not line:
                print("client disconnected")
                break
            if line.strip().lower() == b'quit':
                print("client quit")
                break
            socket.sendall(line)
            print("echoed %r" % line)
        rfileobj.close()

    if __name__ == '__main__':
        # to make the server use SSL, pass certfile and keyfile arguments to the constructor
        server = StreamServer(('127.0.0.1', 16000), echo)
        # to start the server asynchronously, use its start() method;
        # we use blocking serve_forever() here because we have no other jobs
        print('Starting echo server on port 16000')
        server.serve_forever()

Current source

Next page: Example geventsendfile.py