Interesting, i would like to see how tornado stacks up to Lighttpd? Regards, Ismail
On Mon, Sep 14, 2009 at 7:29 PM, Antoni Aloy <antoni.a...@gmail.com> wrote: > > 2009/9/13 Antoni Aloy <antoni.a...@gmail.com>: >> 2009/9/13 Bret Taylor <btay...@gmail.com>: >>> >>> I am one of the authors of Tornado (http://www.tornadoweb.org/), the >>> web server/framework we built at FriendFeed that we open sourced last >>> week (see http://bret.appspot.com/entry/tornado-web-server). >>> >>> The underlying non-blocking HTTP server is fairly high performance, so >>> I have been working this weekend to get other frameworks like Django >>> and web.py working on Tornado's server so existing projects could >>> potentially benefit from the performance. To that end, I just checked >>> in change to Tornado that enables you to run any WSGI-compatible >>> framework on Tornado's HTTP server. You can find it in a class called >>> WSGIContainer in our wsgi.py: >>> >>> http://github.com/facebook/tornado/blob/master/tornado/wsgi.py#L188 >>> >>> You will have to check out Tornado from github to get the change; it >>> is not yet included in the tarball distribution. >>> >>> Here is a template for running a Django app on Tornado's server using >>> the module: >>> >>> import django.core.handlers.wsgi >>> import os >>> import tornado.httpserver >>> import tornado.ioloop >>> import tornado.wsgi >>> >>> def main(): >>> os.environ["DJANGO_SETTINGS_MODULE"] = 'myapp.settings' >>> application = django.core.handlers.wsgi.WSGIHandler() >>> container = tornado.wsgi.WSGIContainer(application) >>> http_server = tornado.httpserver.HTTPServer(container) >>> http_server.listen(8888) >>> tornado.ioloop.IOLoop.instance().start() >>> >>> if __name__ == "__main__": >>> main() >>> >>> >>> I have only done very basic tests using the new module, so if any of >>> you are interested and start using Tornado with your Django projects, >>> please let us know what bugs you find so we can fix them. Any and all >>> feedback is appreciated. >>> >> >> We're acually using Cherrypy, so it would be quite easy to test and >> check the performance. We'll post any issues we found. >> >> > Just few numbers: > > ab -c 10 -t 60 http://localhost:8088/ > Executing Django with Cherrypy with 3 threads on a PPC Computer 2 CPU 2 GHz > > With Tornado WSGI: > ab -c 10 -t 60 http://localhost:8888/ > This is ApacheBench, Version 2.3 <$Revision: 655654 $> > Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ > Licensed to The Apache Software Foundation, http://www.apache.org/ > > Benchmarking localhost (be patient) > Completed 5000 requests > Completed 10000 requests > Completed 15000 requests > Completed 20000 requests > Completed 25000 requests > Finished 25022 requests > > > Server Software: TornadoServer/0.1 > Server Hostname: localhost > Server Port: 8888 > > Document Path: / > Document Length: 266 bytes > > Concurrency Level: 10 > Time taken for tests: 60.019 seconds > Complete requests: 25022 > Failed requests: 0 > Write errors: 0 > Total transferred: 9333206 bytes > HTML transferred: 6655852 bytes > Requests per second: 416.90 [#/sec] (mean) > Time per request: 23.987 [ms] (mean) > Time per request: 2.399 [ms] (mean, across all concurrent requests) > Transfer rate: 151.86 [Kbytes/sec] received > > Connection Times (ms) > min mean[+/-sd] median max > Connect: 0 0 0.1 0 6 > Processing: 3 24 1.9 24 68 > Waiting: 0 24 1.9 23 68 > Total: 7 24 1.9 24 68 > > Percentage of the requests served within a certain time (ms) > 50% 24 > 66% 24 > 75% 24 > 80% 24 > 90% 25 > 95% 26 > 98% 27 > 99% 28 > 100% 68 (longest request) > > > Using CherryPy with 3 threads (the best configuration for my computer > in my tests) > > > ab -c 10 -t 60 http://localhost:8088/ > This is ApacheBench, Version 2.3 <$Revision: 655654 $> > Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ > Licensed to The Apache Software Foundation, http://www.apache.org/ > > Benchmarking localhost (be patient) > Completed 5000 requests > Completed 10000 requests > Completed 15000 requests > Completed 20000 requests > Finished 21500 requests > > > Server Software: CherryPy/3.0.3 > Server Hostname: localhost > Server Port: 8088 > > Document Path: / > Document Length: 266 bytes > > Concurrency Level: 10 > Time taken for tests: 60.001 seconds > Complete requests: 21500 > Failed requests: 0 > Write errors: 0 > Total transferred: 8299000 bytes > HTML transferred: 5719000 bytes > Requests per second: 358.33 [#/sec] (mean) > Time per request: 27.907 [ms] (mean) > Time per request: 2.791 [ms] (mean, across all concurrent requests) > Transfer rate: 135.07 [Kbytes/sec] received > > Connection Times (ms) > min mean[+/-sd] median max > Connect: 0 0 20.5 0 2999 > Processing: 3 28 10.7 26 413 > Waiting: 3 26 10.3 24 412 > Total: 3 28 23.1 26 3031 > > Percentage of the requests served within a certain time (ms) > 50% 26 > 66% 28 > 75% 30 > 80% 31 > 90% 34 > 95% 38 > 98% 43 > 99% 48 > 100% 3031 (longest request) > > > To sumarize: > > 416.90 req/s for Tornado WSGI > 358.33 req/s for CherryPy > > Tornado makes one CPU up to 100% nearly at the same time of the ab > execution, Cherrypy takes longer. Perhaps some CherryPy guru could > configure it better. > > The code is at > > http://appfusedjango.googlecode.com/svn/trunk/hello_world for the > CherryPy (django-cerise) version > http://appfusedjango.googlecode.com/svn/trunk/hello_tornado for the > tornado version (includes tornado wsgi) > > This is a sample helloword project with just the essential to run. > It's the same code I used to compare with PHP frameworks > > http://trespams.com/2009/05/10/django-vs-php-framewors/ > > -- > Antoni Aloy López > Blog: http://trespams.com > Site: http://apsl.net > > > > --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Django users" group. To post to this group, send email to django-users@googlegroups.com To unsubscribe from this group, send email to django-users+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/django-users?hl=en -~----------~----~----~----~------~----~------~--~---