Book Image

Learning Python Network Programming

By : Dr. M. O. Faruque Sarker, Samuel B Washington, Sam Washington
Book Image

Learning Python Network Programming

By: Dr. M. O. Faruque Sarker, Samuel B Washington, Sam Washington

Overview of this book

Table of Contents (17 chapters)
Learning Python Network Programming
Credits
About the Authors
About the Reviewers
www.PacktPub.com
Preface
Index

An eventlet-based chat server


The eventlet library provides a high-level API for event-driven programming, but it does so in a style that mimics the procedural, blocking-IO style that we used in our multithreaded servers. The upshot is that we can effectively take our multithreaded chat server code, make a few minor modifications to it to use eventlet instead, and immediately gain the benefits of the event-driven model!

The eventlet library is available in PyPi, and it can be installed with pip, as shown here:

$ pip install eventlet
Downloading/unpacking eventlet

Note

The eventlet library automatically falls back to select if poll is not available, so it will run properly on Windows.

Once it's installed, create a new file called 4.1-chat_server-eventlet.py and save the following code in it:

import eventlet
import eventlet.queue as queue
import tincanchat

HOST = tincanchat.HOST
PORT = tincanchat.PORT
send_queues = {}

def handle_client_recv(sock, addr):
    """ Receive messages from client and...