This article lists solutions to create network servers in Python for different standard protocols: HTTP, FTP, SMTP, SOAP, syslog, WebDAV, ...
This page was created on the 2009-03-04 and last edited on the 2011-10-20.
First, the standard library provides client and server implementation for several network protocols out of the box: see http://docs.python.org/library/internet.html
The Python standard library provides a simple HTTP server implementation:
By the way, the quickest and easiest way to serve a local directory via HTTP is to launch SimpleHTTPServer with two lines in a shell or a CMD window (be careful though, this server is not secure at all and should only be used for local tests, as it may expose your whole hard drive!). For example if you use Python 2.6 on Windows:
C:\Users\user>cd C:\test C:\test>c:\Python26\Lib\SimpleHTTPServer.py 8123 Serving HTTP on 0.0.0.0 port 8123 ...
If you need better performance and features or a more complete HTTP protocol support, I would suggest CherryPy:
It is sometimes useful to develop a HTTP proxy in Python to filter or modify HTTP requests and responses. This page provides a lot of information about various HTTP proxies developped in Python: http://proxies.xhaus.com/python/
See also my module CherryProxy, a filtering HTTP proxy extensible in Python.
Python does not provide any FTP server in the standard library. You may try pyftpdlib: http://code.google.com/p/pyftpdlib/
In the standard library, see the smtpd module: http://docs.python.org/library/smtpd.html
smtpd may be used as a SMTP server or as a relay.
See simplexmlrpcserver and docxmlrpcserver in the standard library: