You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
22 lines
934 B
22 lines
934 B
import hotshot, time, os |
|
from django.core.handlers.modpython import ModPythonHandler |
|
|
|
PROFILE_DATA_DIR = "/var/log/cmsprofile" |
|
|
|
def handler(req): |
|
''' |
|
Handler that uses hotshot to store profile data. |
|
|
|
Stores profile data in PROFILE_DATA_DIR. Since hotshot has no way (that I |
|
know of) to append profile data to a single file, each request gets its own |
|
profile. The file names are in the format <url>.<n>.prof where <url> is |
|
the request path with "/" replaced by ".", and <n> is a timestamp with |
|
microseconds to prevent overwriting files. |
|
|
|
Use the gather_profile_stats.py script to gather these individual request |
|
profiles into aggregated profiles by request path. |
|
''' |
|
profname = "%s.%.3f.prof" % (req.uri.strip("/").replace('/', '.'), time.time()) |
|
profname = os.path.join(PROFILE_DATA_DIR, profname) |
|
prof = hotshot.Profile(profname) |
|
return prof.runcall(ModPythonHandler(), req)
|
|
|