Internet Protocol Libraries - Python

PyCon India 2010, Bangalore
Senthil Kumaran

Let us look at the some of Python Standard Library modules which formulate and make available various Internet Protocol and help us build good Internet Applications.

There are 3 versions of this presentation:

©2010, licensed under a Creative Commons Attribution/Share-Alike (BY-SA) license.

About Me

Status of Python

Unsupported versions:

http://www.python.org/dev/

Internet Protocols and Support

Applications which are using these

Modules in 2 and 3

Modules in 2 and 3

urllib package in python3

http://www.python.org/dev/peps/pep-3108/

http package in python3

xmlrpc package in python3

webbrowser

url = 'http://www.python.org/'
webbrowser.open_new_tab(url + 'doc/')
webbrowser.open_new(url)

cgi

print "Content-Type: text/html"
print
print "<h1>Hello,World</h1>"
import cgitb
cgitb.enable()

wsgiref

wsgiref

from wsgiref.simple_server import make_server
def hello_world_app(environ, start_response):
    status = '200 OK'
    headers = [('Content-type', 'text/plain')]
    start_response(status, headers)
    return ["Hello World"]
httpd = make_server('', 8000, hello_world_app)
httpd.serve_forever()

uuid

>>> import uuid
>>> print uuid.uuid1()
32fb97c6-c8d3-11df-a47f-00216bad94a4
>>> print uuid.uuid4()
f9e0a0cd-23dd-46c8-95d6-e0bb0198c121

urllib

urllib2

urlparse

httplib

ftplib

SocketServer

+------------+
| BaseServer |
+------------+
      |
      v
+-----------+        +------------------+
| TCPServer |------->| UnixStreamServer |
+-----------+        +------------------+
      |
      v
+-----------+        +--------------------+
| UDPServer |------->| UnixDatagramServer |
+-----------+        +--------------------+

Other Servers

python -m SimpleHTTPServer 8000

xmlrpclib

import xmlrpclib
proxy = xmlrpclib.ServerProxy("http://localhost:8000/")
print "3 is even: %s" % str(proxy.is_even(3))
print "100 is even: %s" % str(proxy.is_even(100))

SimpleXMLRPCServer

import xmlrpclib
from SimpleXMLRPCServer import SimpleXMLRPCServer

def is_even(n):
    return n%2 == 0

server = SimpleXMLRPCServer(("localhost", 8000))
print "Listening on port 8000..."
server.register_function(is_even, "is_even")
server.serve_forever()

Good Resources

Thank you. :)

Senthil Kumaran <orsenthil@gmail.com>