10 statistics = pdm.perf.staticdir()
11 statistics["req"] = pdm.perf.valueattr(reqstat)
12 requests = pdm.perf.eventobj()
14 class reqstart(pdm.perf.startevent):
15 def __init__(self, env):
16 super(reqstart, self).__init__()
17 self.method = env.get("REQUEST_METHOD")
18 self.uri = env.get("REQUEST_URI")
19 self.host = env.get("HTTP_HOST")
21 class reqfinish(pdm.perf.finishevent):
22 def __init__(self, start, aborted, status):
23 super(reqfinish, self).__init__(start, aborted)
26 class request(object):
27 def __init__(self, env):
30 self.startev = reqstart(env)
31 requests.notify(self.startev)
33 def response(self, resp):
36 def finish(self, aborted):
40 if len(self.resp) > 0:
42 if isinstance(status, collections.ByteString):
43 status = status.decode("latin-1")
53 reqstat[key] = reqstat.setdefault(key, 0) + 1
55 requests.notify(reqfinish(self.startev, aborted, status))
60 def __exit__(self, *excinfo):
61 self.finish(bool(excinfo[0]))