#!/usr/bin/env python from webob.response import Response from webob.compat import PY2 def make_middleware(app): from repoze.profile.profiler import AccumulatingProfileMiddleware return AccumulatingProfileMiddleware( app, log_filename="/tmp/profile.log", discard_first_request=True, flush_at_shutdown=True, path="/__profile__", ) def simple_app(environ, start_response): resp = Response("Hello world!") return resp(environ, start_response) if __name__ == "__main__": import sys import os import signal if sys.argv[1:]: arg = sys.argv[1] else: arg = None if arg in ["open", "run"]: import subprocess import webbrowser import time os.environ["SHOW_OUTPUT"] = "0" proc = subprocess.Popen([sys.executable, __file__]) time.sleep(1) subprocess.call(["ab", "-n", "1000", "http://localhost:8080/"]) if arg == "open": webbrowser.open("http://localhost:8080/__profile__") print("Hit ^C to end") try: while 1: if PY2: raw_input() # noqa: F821 else: input() finally: os.kill(proc.pid, signal.SIGKILL) else: from paste.httpserver import serve if os.environ.get("SHOW_OUTPUT") != "0": print("Note you can also use:)") print(" %s %s open" % (sys.executable, __file__)) print('to run ab and open a browser (or "run" to just run ab)') print("Now do:") print("ab -n 1000 http://localhost:8080/") print("wget -O - http://localhost:8080/__profile__") serve(make_middleware(simple_app))