Module asyncore
[hide private]
[frames] | no frames]

Module asyncore

Basic infrastructure for asynchronous socket service clients and servers.

There are only two ways to have a program on a single processor do "more than one thing at a time". Multi-threaded programming is the simplest and most popular way to do it, but there is another very different technique, that lets you have nearly all the advantages of multi-threading, without actually using multiple threads. it's really only practical if your program is largely I/O bound. If your program is CPU bound, then pre-emptive scheduled threads are probably what you really need. Network servers are rarely CPU-bound, however.

If your operating system supports the select() system call in its I/O library (and nearly all do), then you can use it to juggle multiple communication channels at once; doing other work while your I/O is taking place in the "background." Although this strategy can seem strange and complex, especially at first, it is in many ways easier to understand and control than multi-threaded programming. The module documented here solves many of the difficult problems for you, making the task of building sophisticated high-performance network servers and clients a snap.

Classes [hide private]
ExitNow
dispatcher
dispatcher_with_send
file_wrapper
file_dispatcher
Functions [hide private]
 
read(obj)
 
write(obj)
 
_exception(obj)
 
readwrite(obj, flags)
 
poll(timeout=0.0, map=None)
 
poll2(timeout=0.0, map=None)
 
poll3(timeout=0.0, map=None)
 
loop(timeout=30.0, use_poll=False, map=None, count=None)
 
compact_traceback()
 
close_all(map=None)
Variables [hide private]
  socket_map = {}

Imports: select, socket, sys, time, os, EALREADY, EINPROGRESS, EWOULDBLOCK, ECONNRESET, ENOTCONN, ESHUTDOWN, EINTR, EISCONN, errorcode, fcntl