The nodejs model for high concurrency high throughput async applications is also pretty easy to write in python using the (much more mature) twisted framework.
No weak typing or yucky nested callbacks either.
The nodejs model for high concurrency high throughput async applications is also pretty easy to write in python using the (much more mature) twisted framework.
No weak typing or yucky nested callbacks either.
When I've deployed django applications we used apache and mod wsgi. This works by starting up a bunch of apache processes which load up a python interpreter. Each HTTP request that comes into the application is handled by an apache process which contains a python interpreter. This means that you have to use 100-200 Mb for each python requests. This is the amount of memory it takes to run a python interpreter. The number of mod wsgi processes that you can run at a single time determines the number of HTTP requests that you can handle. For the same amount of memory you could handle more HTTP requests using nodejs or twisted or any other framework that uses the event model.
I keep reading this and I don't understand. ¿How can a single thread process be concurrent?
The select system call takes a set of file descriptors and returns which file descriptors you can read, because new data is available to read. These frameworks read from these file descriptors and dispatch the new data to a callback method. The event loop only processes one thing at a time, because it is single threaded. However, since reading from the file descriptor and processing the callback is usually fast, this scales very well. Once again, it only scales well for IO bound operations. This uses less memory than having a single thread for each HTTP request, and it definitely uses less memory than having a single process for each HTTP request.
With your answer I understand it is not concurrent but scales well anyway.