- routing - simple extensible mapping between URL patterns (as plain simple strings, curly expressions or regular expressions) to a handler; the mapping can include other mappings and constructed dynamically; reverse path by name
- domain model update from request input; validation
- transparent validation errors integration in HTML widgets
- authentication/authorization
- i18n (gettext)
- middlewares, response transforms, cookies, etc
- content caching, HTTP cache policy and cache profiles + cache dependency
- functional testing
- template engine agnostic, however brings wheezy.template. It offers HTML widgets for various template engines to make your code more readable and consistent (via template preprocessing to generate an optimal markup for given template engine)
- integration with pycrypto, lxml, python-memcached and pylibmc; the wheezy.captcha library is based on PIL
- documentation per package, tutorial, examples, demo
- Python 2.4 - 3.3+ ready
Features, you find in other frameworks, but not here:
- web sessions: it is recommended to use fine grained caching instead, same development effort with better outcome. Take this thought: I have application with 20 handlers, each store some unique data, but only one handler serves an incoming request, so I need just data unique to my handler. With session, you receive all data, stored by various handlers... your handler done... all session data are stored back. How things go in concurrent attempts to `modify` the same session, e.g. ajax calls? It is not a problem for something small, in-memory,... but that is a huge problem as you scale and go big
- gzip middleware: nginx do that better
- static site caching middleware: nginx+uwsgi do that better
- model update, validation and HTML widgets as a single `Form Library`: you will not find it here. All three are separate actors, mixing them all-in-one loose flexibility
- ORM: `separation of concerns` tells me it distinct feature that has very little to do with web... integration is usually few lines of code regardless of web framework
- Admin: the bloat of code can be so killing that you even don't realize where web framework ends and where mess starts. In my opinion it is distinct feature, and should evolve alone
What I am looking for? The python community feedback and tight collaboration.
You get a mention here http://terse-words.blogspot.co.uk/2012/11/python-web-microframeworks-take-your.html. Good luck with your endeavours.
ReplyDeleteHi Andriy
ReplyDeleteJust came across wheezy and the performance looks exceptional. Couple of questions:
a. For development/test, wheezy would be ideal. But, what about in production use wrt both the application server and web server?
b. Does wheezy support gevent?
Thank you for the questions:
Deletea. Works fine with uwsgi+cpython2.7 or gunicorn+pypy behind nginx; memcached for content caching.
b. If your application server supports gevent you should be good with wheezy.web as well.
Hi,
ReplyDeleteI have a problem in the tutorial.
from wheezy.template.engine import Engine
ImportError: No module named template.engine
but I have installed wheezy.template in my venv with easy_install
The import error as you reported happens if you do import like this:
Deletefrom template.engine import Engine
Ensure valid import in your code, please.
Turns out wheezy.template wasn't installed correctly (I used "easy_install wheezy.template"). I removed the package and installed with "pip install wheezy.template". That did it.
DeleteAndriy,
ReplyDeleteis there a community place, like google groups, for wheezy? I think a communication channel like that would open things up a bit. A place to ask questions, give examples etc.
I like the wheezy tutorial, it's understandable.
Hi,
DeleteI figured this might be useful, so I opened https://groups.google.com/forum/#!forum/wheezyweb