(2005-04-15) Web Concurrency Models
Ian Bicking on various WebApp concurrency models and interfaces: FastCGI, SCGI, ASynch models (Medusa, Twisted Matrix, etc.) This is a discussion about the differences between threaded ConCurrency (Multi Threaded), with a pool of worker threads, and MultiProcess concurrency, with a pool of worker processes... In Python people go both ways. Threading (Multi Threaded) seems to be more common, probably because it's more obvious and is easy to scale until you hit the one-process/one-machine barrier. Zope, WebWare, and CherryPy are all threaded. SkunkWeb, CGI, and ModPython all use multiple processes (MultiProcess) (well, mod_python can use a single process with multiple interpreters, but I believe requests always are processed in separate interpreters). Quixote and now W S G I Kit are fairly neutral on the matter. I'm not sure where other frameworks lie. And of course there is asynchronous (ASynch, event driven) programming, which is non-threaded single-process. This is popular on the network level - Twisted Matrix, Medusa, asyncore - but relatively uncommon in higher level systems, with Nevow being the exception.
Jan'2008: review of Python approaches: StackLess/Co Routine, Twisted Matrix, etc.
- Dec'2008: add WeightLess to the list.
Edited: | Tweet this! | Search Twitter for discussion
No backlinks!
No twinpages!