Some Criteria for Selecting a Python-Based Web Framework
Server/Process Model (Application Server)
- standalone server or CGI popup? CGI, FastCGI, IIS/ASP, SCGI, mod_python?
- single-process, single-thread, event-driven?
- site changes require restart of server?
- supports HTTP/1.1? pipelining? persistent-connection?
- protocols other than HTTP?
- background threads, processes?
- can put limits on subprocesses?
- feature to send email?
- feature to chat?
- feature re file library?
- feature re polls
- feature re reminders, some hook into CRON, periodic functions
- supports Python Web Server Gateway Interface (WSGI)?
URL Parsing Model (HTTP Adapter)
- supports REST-like URL processing? access to HTTP methods?
- every Python object in a namespace is potentially web-accessible?
- form validation helpers?
Content Model
- includes a template language? Replaceable? XML-ish? PHP-ish? non-SGML?
- can template language be used to construct email, other content types?
- HTML mixed into Python? Python mixed into HTML? Can do either?
- internationaliztion support? Unicode content?
- supports content streaming?
- an example of the template language
- audience: designers, programmers, users
- content-mgmt features?
- can site be modified thru-the-web? is a shell account required?
- library of web widgets?
- client-side AJAX/LiveEvil support?
Data Persistence Model
- includes SQL database drop-in? Limited to specific database types?
- includes OO database drop-in? Limited to specific database types?
- can be backed up while running?
- any versioning features?
- internal content caching?
Support/Development Model
- year of origin
- date of last update
- version reviewed
- date of review
- qty of docs; support mailing lists? bug tracker?
- run by one person, informal team, corporate?
- license?
- versions of Python supported?
- OS platforms supported?
- security issues; is the code reviewed? CERT?
- crypto support re ssl, server/client certs?
- supports developer method X where X is: pgm/designer team, corp delegation, ...
Developer Tools
- logging of internal steps
- can break into Python interpreter inside server? without disrupting others?
- can dump REQUEST and/or RESPONSE in a meaningful way? To log or browser?
User Model
- includes browser sessions? cookie-based, hidden-form-var, URL-based?
- user identification/authentication subsystem?
- access controls? granularity? URL subtree delegation?
Performance
- somehow...
- scalability
- multi-machine?
|
|