Unsorted Python Topics

Web Platforms for Python

Copyright 2010 by Stephen Vermeulen
Last updated: 2010 Jul 26
Web Services and Python





250 350 5105283 actual allegra amk apr attribute bayesian cellpadding community comparing connections deliverance difficulties experimental filling guido homepage imdb instant introduces linkchecker mail muscle n notification nz openstreetmap packets plog podcast poster promising publications received rule scale scheme sdk showmedo somewhere st straight strategy tcp template templates tornado udp updates videos webframeworks weblogs wrappers zzzeek
A large number of web frameworks exist for writing web-based services in Python. Development of simple web servers in Python to address particular needs is quite straight forward.

  • 2010-Jul-26: Hookbox is a websocket / webpush server. [9323]
  • 2010-Apr-30: Parlatorio is a simple web comment system that uses OpenID, in this blog note there is a discussion of why the author chose certain third party packages. Another note on using OpenID through the python-openid module. [396]
  • 2010-Apr-06: Tornado (project home page) is another web framework for Python. This one originated with FriendFeed. Mentioned here and discussed here on Slashdot. Praise for Tornado can be found here. [8508]
  • 2009-Nov-05: execnet.py, a library for remote execution of Python code fragments. Here on pypi. This can be used to work with .NET code remotely. [337]
  • 2009-Oct-23: web.py, a simple web framework for coding sites in Python. Using web.py to implement a RESTful API. [397]
  • 2009-Oct-23: The diesel server is a new asynchronous web server engine for Python. Beautiful coroutines, cooperative concurrency in Python using Diesel. [8557]
  • 2009-Sep-23: The Twisted networking framework, has a book: Twisted: Network Programming Essentials, available in Oct'05. There are a number of projects implemented with Twisted, these include Twisted Web (an HTTP server),  Twisted Mail (SMTP, POP and IMAP clients and servers), Twisted News (an NNTP client/server), Twisted Lore (a documentation generator with HTML and LaTeX support), Twisted Runner (for process management and inetd replacement). Allegra is an alternative to Twisted, here are some comments on Twisted vs. Allegra. An article that introduces some client-side programming using Twisted. Another comparison of Allegra and Twisted. Another mail server based on Twisted. A series of articles on using the Twisted Web in 60 seconds. [319]
  • 2009-Sep-04: Amplitude is a fast, light, web-development framework. [8463]
  • 2009-Aug-26: fapws is a fast asynchronous python web server. This got renamed to nfapws. [8287]
  • 2009-Aug-06: Some thoughts on the pros and cons of Werkzeug, WebOb and Django. [8373]
  • 2009-Jul-30: A lament about the state of WSGI frameworks. [8348]
  • 2009-Jul-20: paramiko, a Python module for SSH2 connections, also here on PyPI. [341] [1]
  • 2009-Jul-17: berry is a minimal web framework written in Python. [8285]
  • 2009-Jul-16: authorize is a Python client library to connect to the authorize.net payment processing service. [8281]
  • 2009-Jul-13: bottle is another WSGI-framework for small web-applications. [8255]
  • 2009-Jun-05: pyRails a project to make a rails environment for Python. [8087]
  • 2009-Jun-04: lamson is a mail server built in Python. [8079]
  • 2009-Jun-04: Hydra is a multi-threaded web server for Python. [8075]
  • 2009-May-26: bobo is a light-weight framework for creating WSGI web applications. [8044]
  • 2009-May-04: TileLite (here on PyPI) is a light weight WSGI tile-server, written in python, using Mapnik rendering and designed to serve OSM (OpenStreetMap) tiles. I guess this allows one to implement a Google Maps like server. [7938]
  • 2009-Apr-14: pesto is a WSGI application library. [7870]
  • 2009-Apr-14: wsgid is a WSGI server with support for SSL and code reloading. [7869]
  • 2009-Apr-08: poster is a module for streaming HTTP uploads and multipart/form data encoding. [7848]
  • 2009-Apr-03: Flojax might be a better way of creating AJAX applications. [7822] [1]
  • 2009-Mar-20: A positive vote for Django. [7753]
  • 2009-Mar-09: Fabric a remote deployment tool designed to upload files to and run shell commands on a number of servers in parallel. Some notes on using this. [5015]
  • 2009-Mar-06: Pimdox is a personal information manager and documentation system that will build a static website from text files. [7694]
  • 2009-Mar-03: Python HTTP Pipelining is an implementation of HTTP Pipelining for Python, this allows an HTTPConnection to send the next request(s) ahead of time (i.e. before the response to the previous request has been received). Now if only an HTTP server could send responses back to the client before the client makes the requests... [7675] [1]
  • 2009-Mar-03: Blogofile is a blog engine and compiler. [7674]
  • 2009-Jan-21: Restish and Formish a lightweight WSGI web framework and a form library to go with it. They are on PyPi; restish and formish. [7465]
  • 2008-Dec-25: Mako is a templating language for Python. [7386]
  • 2008-Dec-17: rocket is a simplified framework for writing web applications to run on the Google App Engine. [7362]
  • 2008-Dec-11: spats is a simple page template server. [7333]
  • 2008-Dec-09: Epy is a compiler to turn Python code (with some limitations) into Javascript for execution in a browser. This has progressed to the point where it can implement Pong in a browser. [7325]
  • 2008-Nov-29: The reverend module (from Divmod) provides a bayesian filter. The reverend module gets used to automatically classify blog pages with some promising results. [380]
  • 2008-Nov-13: Some people really like plone. [7211]
  • 2008-Nov-03: An unusual approach to log file parsing talks about formatting log file messages as actual commands that can be executed. The result of this is that a log file might even be a full Python script that you run to analyze. [7143]
  • 2008-Nov-03: IMDbPY, a Python package (home page: imdbpy.sourceforge.net) useful to retrieve and manage the data of the IMDb movie database about both movies and people. [368]
  • 2008-Nov-02: postmarkup is a bbcode (bulletin board code) rendering engine for Python. It allows users to enter a text with restricted markup codes that it then converts safely to html. [7131]
  • 2008-Oct-30: smisk is another web service framework. [7125]
  • 2008-Oct-26: FunkLoad, is a web testing and load generator. This is discussed in a PyCon 2006 talk, the slides are here. One user applies this to testing a web site. [326]
  • 2008-Oct-22: Chameleon is a web page templating system that compiles templates to some form of byte code. Sounds rather interesting. [7066]
  • 2008-Oct-07: A discussion of Python web platforms and Deliverance. [6994]
  • 2008-Oct-03: madpy is a new content management system. [6978]
  • 2008-Oct-02: pyjamas, allows you to use the Google Web Toolkit to do AJAX from Python. There is now a second version: pyjamas2. [378]
  • 2008-Sep-23: Nagare is another Python web framework. The project homepage is here. [6902]
  • 2008-Sep-18: Gracie (project home page) is an OpenID provider for local accounts [1879] [1]
  • 2008-Sep-13: The Python weblog package (or more recently here) is a simple blogging tool that produces static HTML files as output. [4415] [1]
  • 2008-Aug-29: Diva is a light weight web framework for Python. [6759]
  • 2008-Aug-27: gaeo is a simple web framework for the Google Appengine. [6748]
  • 2008-Jul-30: Pinax is a project to create an out-of-the-box Django-based website, ready for you to add content too. The main website for this is pinaxproject.com. [6326]
  • 2008-Jul-27: Frog, is a Blog server application written for Snakelets. It is small but has many features, such as BBcode markup, XHTML+CSS page output, multiple users, no database required, anti-spam measures, email notification, Smileys, RSS feeds, and more. This is now at frog-blog with a home page here on SourceForge. [339]
  • 2008-Jul-03: Discussion of Twisted, including some of the difficulties of testing. [6475]
  • 2008-Jun-27: A discussion of how one would go about writing asynchronous code with Twisted. [6452]
  • 2008-Jun-24: werkzeug offers a collection of utilities for WSGI applications and other HTTP related tasks. [6421]
  • 2008-Jun-11: Jinja, a simple pythonic template engine. This has been updated to jinja2. [369]
  • 2008-Jun-11: Django is used in a number of mash-up sites, perhaps this is to be the future of journalism. [6312]
  • 2008-Jun-06: How to develop in Django without projects. [6300]
  • 2008-May-28: webskine is a simple WSGI blog. [6248] [1]
  • 2008-May-28: Mantissa: and Alternative to LAMP describes the new Mantissa web stack for the Python Twisted environment. A quick set up guide for Mantissa is here. [6247]
  • 2008-May-24: A short guide to using Amazon S3 for incremental backup storage with help from boto, GnuPGInterface, librsync and duplicity. [6222]
  • 2008-May-15: Using secure authentication cookies with Django, this implements part of a paper on secure cookie protocols. [6171]
  • 2008-May-12: Political Loyalties in Web Frameworks takes a look at several Python frameworks and classifies them into right or left leaning camps. [6137]
  • 2008-May-10: StarScream is a tool for writing presentations in reStructuredText, the slides and handouts it produces are DHTML. Home page on Google Code. [5357] [1]
  • 2008-Apr-25: Dandelion is an experimental wiki engine written in Python. [5975]
  • 2008-Apr-18: Breve is a Python web template engine that uses a domain specific language for its templates. [5851]
  • 2008-Apr-17: Athena is an AJAX/Commet like system for Nevow and Twisted. [5840]
  • 2008-Apr-17: Vertex is an implementation of the Q2Q protocol (better than P2P) in Twisted. [5839]
  • 2008-Apr-17: FPyS is a Python library for interacting with the Amazon Flexible Payment Service. [5837]
  • 2008-Apr-17: Another Do-It-Yourself Framework is an updated tutorial on building a web framework using WSGI and WebOb. [5834]
  • 2008-Apr-14: WebOb, a request/response handler object, main page is here, here on the CheeseShop. WebOb provides wrappers around WSGI requests and responses. [406]
  • 2008-Apr-11: On 8-Apr-08 Google started to preview their Google App Engine, discussed here on Slashdot. Their overall design goals:
    1. make it easy to use
    2. make it easy to scale
    3. free to start (small apps)

    What Google will do for you:

    1. Run the web applications
    2. provide the full life cycle, logs, status, updating, database...
    3. provide access to Google's scalable infrastructure, google accounts, big table, Google FS

    To do this the application stack they provide has:

    1. Scalable serving infrastructure
    2. Python runtime
    3. SDK
    4. Web based administration console
    5. Datastore (based on big Table)

    Their environment does allow you to run a local test server, so you can do your application development on your own private machine.

    They provide a basic Django template module.

    Seems to follow the Python wsgiref module.

    An initial presentation of this is in these videos.

    One of the things this does is to get you to build things using Google tools which may result in an implementation that is difficult to move to some other service provider without doing a complete rewrite. Whereas if you were using Amazon's EC2 you are writing for a more standard LAMP style environment so you should be able to take whatever you develop and run it somewhere else. Of course, if you keep this all in mind it might not be a big issue, use the Google tools to develop a prototype and test the waters before investing in a full scale project.

    With Google's use of Python as the first application language to be supported by this system it has caused an unprecedented stir in the Python community, see:

    [5739] [1]
  • 2008-Apr-07: A discussion of selecting the right web framework for the job. And another, more detailed, look at this. [5613]
  • 2008-Apr-03: A JSON RPC client and server pair. Ian Bicking thinks that doing this with WebOb makes more sense and provides a tutorial here. [5375] [1]
  • 2008-Apr-03: One s3fs to rule them all a quick note on interfaces to the Amazon S3 storage service, two of which are implemented in Python. [5383]
  • 2008-Mar-11: Easy testing of CGI scripts using a simple CGI server written in Python. [5255]
  • 2008-Mar-11: iWeb Space an attempt at a flexible service for lightweight AJAX in Python. [5254]
  • 2008-Mar-05: WikklyText is a Python based wiki compatibile with TiddlyWiki, the main site is here. [5227]
  • 2008-Jan-29: The Python software used to run the Comprehensive Knowledge Archive Network (CKAN) site. [5014]
  • 2008-Jan-21: In Eating My Own Dogfood Christopher Lenz talks about his custom blogging software that he's writing in Python. [4969]
  • 2007-Dec-18: Using cryptography to protect data stored in client side cookies. [4454] [1]
  • 2007-Dec-18: Some praise for Pylons over Django. Contrast that to this discussion of some reasons to prefer Django over TurboGears (using Pylons). [4453]
  • 2007-Dec-13: A note on how WSSE Authentication works. [4424]
  • 2007-Oct-21: Some observations on using Python to power the BeContrary web site. [3494]
  • 2007-Oct-21: Using reStructuredText to write for the web and printed media. Praise for ReST can be found here. [331]
  • 2007-Oct-12: PyWPS is a Python implementation of GRASS, the Geographic Resources Analysis Support System that is used for geospatial data management and analysis, image processing, graphics/maps production, spatial modeling, and visualization. [3255]
  • 2007-Oct-11: Using the Pyparsing module to implement recursive decent parsers in Python, for when string.split() is not enough. Includes an example of doing HTML scraping. There is a support Wiki for this here. O'Reilly is publishing a small book on using this: Getting Started with Pyparsing. [332]
  • 2007-Oct-05: htmltotext, a package to extract text from HTML pages for the purposes of searching. [2608]
  • 2007-Oct-01: Scripting inkscape with Python to slice web pages into layers. [2416]
  • 2007-Sep-30: Photo uploader, a Python script to upload photos to various sites. [2403]
  • 2007-Sep-26: lara, a web framework in Python. [2253]
  • 2007-Sep-23: In this Show Me Do video Jeff Rush walks through the code of a simple web server built on the twisted platform. This demonstrates Nevow, STAN (for the template language) and an RSS feedparser. [2249]
  • 2007-Sep-14: FlatAtompub, a small atom publishing protocol program. [1895]
  • 2007-Aug-27: python-cjson, is a module that provides C implementation of JSON encoding and decoding that can be up to 250 times as fast as native Python. [585]
  • 2007-Aug-24: Implementing a simple HTTP server with IronPython's (.NET) HttpListener. This should also be able to handle HTTPS connections. [578]
  • 2007-Aug-24: Building a (fast) Wikipedia offline reader, has quite a lot of interesting material [405]
  • 2007-Aug-24: Parsing RSS files with ElementTree [404]
  • 2007-Aug-24: html5lib, is a module for processing web pages using the new HTML5 specification. [403]
  • 2007-Aug-24: Orbited, an http daemon that can be used to write real-time web applications (such as chat rooms) where the server pushes out updates to the browsers. There is some discussion of this here. [402]
  • 2007-Aug-24: A simple Python script to make use of Yahoo's "term extraction" service [401]
  • 2007-Aug-24: Instant Django is a portable Django development environment for Windows [400]
  • 2007-Aug-24: mod_wsgi is an Apache module that provides a WSGI compliant interface for hosting Python based web applications [399]
  • 2007-Aug-24: objson, manipulate JSON data from within Python [398]
  • 2007-Aug-24: pysnmp, a Python SNMP framework [395]
  • 2007-Aug-24: httplib2, a comprehensive HTTP client library. [394]
  • 2007-Aug-24: Pythomnic, a system for building reliable network services in Python, including addressing redundancy and the need to be able to ugrade modules without downtime. Discussed here on Slashdot. [393]
  • 2007-Aug-24: CR a tiny pasword-protected file server [392]
  • 2007-Aug-24: Throxy, a throttling HTTP proxy in Python [391]
  • 2007-Aug-24: ez_web, another light-weight web platform for Python. [390]
  • 2007-Aug-24: TurboLucene, a module for using PyLucene for full text searching from within the TurboGears world [389]
  • 2007-Aug-24: Aspen is a WSGI-centric web server. [388]
  • 2007-Aug-24: FlightFeather is a social networking platform, it gets discussed here in the context of improving server performance by using static HTML when possible. [387]
  • 2007-Aug-24: OHM, the Object HTTP Mapper is a library for serving Python objects at REST-style HTTP APIs and for consuming REST-style APIs as Python objects. [386]
  • 2007-Aug-24: mapit, a set of Python APIs for use with popular online mapping services [385]
  • 2007-Aug-24: aquarium, a web application framework [384]
  • 2007-Aug-24: omniORB is a robust, high performance CORBA implementation for C++ and Python [383]
  • 2007-Aug-24: pyip, a Python package for assembling and disassembling raw IP packets [382]
  • 2007-Aug-24: simpleweb, is a python web framework, inspired by Django, Turbo Gears and Web.py [381]
  • 2007-Aug-24: palabre, a Flash XML multiuser socket server [379]
  • 2007-Aug-24: porcupine is a web application server. [377]
  • 2007-Aug-24: dom3k, a rapid development framework for AJAX using the SPyRO web services provider. [376]
  • 2007-Aug-24: textile, an XHTML generator that uses a simple markup scheme [375]
  • 2007-Aug-24: markup.py, an HTML and XML generator in Python [374]
  • 2007-Aug-24: spark, a super-small, super-fast and super-easy web framework, with all those supers I wonder why its not called superweb? [373]
  • 2007-Aug-24: Pocoo is an open-source bulletin board system written in Python [372]
  • 2007-Aug-24: linkchecker, a Python application to check websites and HTML documents for broken links [371]
  • 2007-Aug-24: TCP WSAECONNRESET - connection reset by peer errors being caused by applications filling the TCP transmit buffer on windows. [370]
  • 2007-Aug-24: LDAP client API for Python, the python-ldap project on sourceforge. [367]
  • 2007-Aug-24: urlimport, a module for importing modules/packages over the net. [366]
  • 2007-Aug-24: BitBucket, accessing the Amazon S3 service from Python. [365]
  • 2007-Aug-24: Myghty has been used to host the bittorrent.com website (50 million page views per day). Some more on Myghty. [364]
  • 2007-Aug-24: LocaWapp, localhost web applications server [363]
  • 2007-Aug-24: karrigell, a web-framework written in Python, it allows you to write pages as Python script, as Karridell services, as HTML in Python or as Python in HTML. [362]
  • 2007-Aug-24: pyraknet, networking package based on UDP [361]
  • 2007-Aug-24: trac is an integrated wiki, bug tracker and source code management tool written in Python [360]
  • 2007-Aug-24: Shtoom, open source VOIP implemented in Python [359]
  • 2007-Aug-24: The Ming Server, a simple Python web application server [358]
  • 2007-Aug-24: Vertex, a P2P system called Q2Q [357]
  • 2007-Aug-24: Catching a hanging application that uses Twisted [356]
  • 2007-Aug-24: httplib2, an HTTP client library [355]
  • 2007-Aug-24: Stripping content from HTML pages [354]
  • 2007-Aug-24: Web frameworks, WSGI and Pylons, more comments on WSGI [353]
  • 2007-Aug-24: A PyCon talk on writing Effective Ajax with TurboGears [352]
  • 2007-Aug-24: The django Book, is being pre-released on the web for eventual print distribution (Nov'06 announcement here) [351]
  • 2007-Aug-24: Djumpstart: Build a To-do List in 30 Minutes, a tutorial introducing Django [350]
  • 2007-Aug-24: At the end of Jan'06 Guido started looking into webframeworks for Python. Here are some comments on this. [349]
  • 2007-Aug-24: Some comments on playing with Django. Django versus Cheetah. Various reviews of Django. Some observations on using ElementTree with Django. Django for non-programmers. Guido has taken note of Django. A podcast interview with Guido where Django is mentioned as a favourite. Django after using Rails. [348]
  • 2007-Aug-24: Django, a web framework for publishing, this was built by the Lawrence Journal-World people (and is used for their site according to this blog) [347]
  • 2007-Aug-24: pkipplib, a Python library that supports IPP (internet priniting protocol) requests, and includes support for CUPS print servers. From Pykota. [346]
  • 2007-Aug-24: MoinMoin is a Wiki written in Python [345]
  • 2007-Aug-24: Spyce, this is a web environment for Python that allows Python code to be embedded in the pages [344]
  • 2007-Aug-24: MUSCLE, Multi User Server Client Linking Environment (freshmeat) has a Python API. It is an N-way messaging server and networking API. It includes client-side networking APIs for various languages, including C, C++, C#, Delphi, Java, and Python. MUSCLE lets programs communicate over a network via streams of serialized Message objects. The included server program ("muscled") lets its clients message each other and store information in its server-side hierarchical database. The database supports flexible queries via hierarchical wildcarding, and "live" updates via a subscription mechanism. [343]
  • 2007-Aug-24: a simple comparison of a Python BaseHTTPServer to a .NET HttpListener.  An https server built on Medusa's http_server. [342]
  • 2007-Aug-24: generating Motorola S19 checksums [340]
  • 2007-Aug-24: RFC2397, Data URLS, and a Python module to implement them [338]
  • 2007-Aug-24: Orchid, a generic, multi-threaded web crawler [336]
  • 2007-Aug-24: httpy, a sane and robust HTTP library for Python [335]
  • 2007-Aug-24: Comparing J2EE, Rails, Zope, TurboGears and Django. [334]
  • 2007-Aug-24: Comparing the CherryPy and RhubarbTart web frameworks.  A book on CherryPy is to be written. [333]
  • 2007-Aug-24: Python-Hosting.com specializes in hosting web sites that are implemented in Python. [330]
  • 2007-Aug-24: HostOnFire announces new web hosting packages with better Python support [329]
  • 2007-Aug-24: Apricot, a minimal, fast http daemon [328]
  • 2007-Aug-24: Why not to send pickles in RPC calls [327]
  • 2007-Aug-24: Walker, is a web page publishing script, it keeps a remote web server's set of files in sync with a master copy you have on your machine using FTP to do so. [325]
  • 2007-Aug-24: PyTML, is a templating language based on Python and XML, it expands HTML embedded in XML files into full web pages [324]
  • 2007-Aug-24: TurboGears, a "Ruby on Rails" like thing for Python, the docs for it are here. The book: Rapid Web Applications with TurboGears is currently in production, and an electronic preview of the first half is available. [323]
  • 2007-Aug-24: nattraverseo, is a NAT traversal library, this allows one to discover what the external IP address is from within the protected side of a NAT firewall. [322]
  • 2007-Aug-24: Digest Authentication and the urllib2. [321]
  • 2007-Aug-24: pyasyncio, a library for doing asynchronous IO from Python [320]
  • 2007-Aug-24: THR33, a Python web application server [318]
  • 2007-Aug-24: lib_rharris, a module containing an assortment of tools for net tasks including acquiring, parsing and storing web sites. [317]
  • 2007-Aug-24: The snakelets web platform [316]
  • 2007-Aug-24: A note on SSL authentication and HTTPS [315]
  • 2007-Aug-24: The simplest Python web server is the test code that is built into the SimpleHTTPServer class. [314]
  • 2007-Aug-24: A simple web server, including the ability to do HTTP uploads [313]
  • 2007-Aug-24: mod_python is a module that embeds Python within the Apache web server. One limitation is that it only seems to work in directories that are open access or controlled by Basic authentication (not Digest authentication). Here is a recipe for doing Digest authentication. Vampire is an extension module for mod_python. A WSGI wrapper for mod_python. [312]



              back to vermeulen.ca home