Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

Add a simple HTTP benchmark

  • Loading branch information...
commit ade3ce2e9819b38f462fddfdc618845e2c9c94fd 1 parent dfac3a6
@bdarnell bdarnell authored
Showing with 45 additions and 0 deletions.
  1. +45 −0 demos/benchmark/benchmark.py
View
45 demos/benchmark/benchmark.py
@@ -0,0 +1,45 @@
+#!/usr/bin/env python
+#
+# A simple benchmark of tornado's HTTP stack.
+# Requires 'ab' to be installed.
+#
+# Running without profiling:
+# demos/benchmark/benchmark.py
+#
+# Running with profiling:
+#
+# python -m cProfile -o /tmp/prof demos/benchmark/benchmark.py
+# python -c 'import pstats; pstats.Stats("/tmp/prof").strip_dirs().sort_stats("time").print_callers(20)'
+
+from tornado.ioloop import IOLoop
+from tornado.options import define, options, parse_command_line
+from tornado.web import RequestHandler, Application
+
+import signal
+import subprocess
+
+
+define("port", type=int, default=8888)
+
+class RootHandler(RequestHandler):
+ def get(self):
+ self.write("Hello, world")
+
+ def _log(self):
+ pass
+
+def handle_sigchld(sig, frame):
+ IOLoop.instance().add_callback(IOLoop.instance().stop)
+
+def main():
+ parse_command_line()
+ app = Application([("/", RootHandler)])
+ app.listen(options.port)
+ signal.signal(signal.SIGCHLD, handle_sigchld)
+ proc = subprocess.Popen(
+ "ab -n 10000 -c 25 http://127.0.0.1:%d/" % options.port,
+ shell=True)
+ IOLoop.instance().start()
+
+if __name__ == '__main__':
+ main()
Please sign in to comment.
Something went wrong with that request. Please try again.