What features does Snakelets have?
- Snakelets is written in 100% pure Python. It is small, simple and extremely portable - it runs everywhere Python runs and TCP/IP networking is available. It works on Python 2.3 but Python 2.4 is recommended.
- Multithreading web server that can service multiple requests at the same time, and can handle file streaming and partial reads (i.e. seeking in a streamed mp3 or resuming a download). No additional installed web server such as Apache is required to run Snakelets, but you can still do so if you want.
- Fully unicode compatible (can read and output pages containing all character sets), automatically shows non-ASCII characters correctly even on pages with 'restricted' character encodings such as ASCII or ISO-8859-1.
- Can run from a CD (readonly mode). Ideal for demos or embedded use.
- Automatic discovery and installation of web services and web application. No complex configuration files needed.
- Virtual Hosting (multihoming) support based on hostnames.
- Friendly urls; it is not strictly necessary to put the suffix of the document in the url. Snakelets will serve the matching file automatically.
- Snakelets: very easy ways of creating dynamic web content (code-centric, you write request handlers in Python). (like Java's Servlets)
- Ypages: add Python server-side scripting to a web page for dynamic content (using a page template processor). (like Java's JSPs). Ypages are compiled to Python code (actually, to a Snakelet) that is then executed every time the page is requested. This results in very good performance.
- On-the-fly-updating: Ypages are automatically recompiled if you change them on disk. So a simple reload in your browser does the trick, it is not necessary to restart the server when you want to make changes in the website.
- Easy session and user management for your HTTP requests, using a cookie with a secure session ID.
- Easy user authentication and user login handling.
- Easy handling of form-uploaded files.
- Avoid code duplication by using site templates and page inheritance.
- Plugin mechanism to add features or intercept specific actions in the server.
- Good performance because of compiled page code and little memory usage, and efficient processing of static content (.html, images)
- Configurable logging using Python's standard logging module.
- Custom server error pages and session timeout page.
- Several example web applications are included: a mp3 indexer and streamer, and a shop (and the management app).
- Built-in management of the server and the web applications using the included management web application. You can see info of all web applications, reload them, disable them, delete them... from your web browser.
Are you interested in the performance? Have a peek at some Benchmarks that I've done.
Screenshots (1.40)
Management interface: server info
Management interface: virtual host config
Management interface: webapp info
Management interface: test pages