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...