1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
|
#!/usr/bin/python
# -*- coding: utf-8 -*-
# main (wsgi) request handler for patch-tracking system
# this handler file basically farms out all its work to the ReqHandler
# module, which in turn splits up the request URI and acts accordingly.
import os
import sys
def application(env, resp):
# everything is currently run relative to the pagehandler script.
whereami = os.path.dirname(env['SCRIPT_FILENAME'])
sys.path+=[whereami]
os.chdir(whereami)
import patchtracker.ReqHandler as ReqHandler
try:
cmdh = ReqHandler.CmdHandler(env)
resp(cmdh.status, cmdh.headers)
return cmdh.output()
except ReqHandler.ReqHandlerException, e:
resp(e.status, [('Content-Type', 'text/html')])
return ReqHandler.ErrorCmd(str(e), e.status).output()
def profile_app(call):
profile.run(call, "profile.out")
p = pstats.Stats("profile.out")
p.sort_stats('time', 'cumulative')
p.print_stats()
p.print_callers()
p.print_callees()
if __name__ == '__main__':
os.environ['SCRIPT_FILENAME'] = sys.argv[0]
from wsgiref import simple_server as ss
import getopt
import cProfile as profile, pstats
def cmd_help():
print """
usage: %s [-hp]
-h: help message
-p: enable profiling
"""%(os.path.basename(sys.argv[0]))
def cmdline_resp(status, headers):
print "STATUS:",status
print "HEADERS START"
for h,v in headers:
print "%s: %s"%(h,v)
print
opts,args = getopt.getopt(sys.argv[1:], "ho:p")
profiling = False
interactive_ofile = sys.stdout
for o,v in opts:
if o == "-h":
cmd_help()
sys.exit(0)
if o == "-p":
profiling = True
if o == "-o":
interactive_ofile = file(v, "w")
if not args:
print "pagehandler test server running..."
server = ss.WSGIServer( ('',8080), ss.WSGIRequestHandler)
server.set_app(application)
while True:
try:
if not profiling:
server.handle_request()
else:
profile_app("server.handle_request()")
except IOError, e:
print "adsf: ",e
else:
os.environ['PATH_INFO'] = args[0]
if not profiling:
interactive_ofile.write(application(os.environ, cmdline_resp))
else:
profile_app("interactive_ofile.write(application(os.environ, cmdline_resp))")
|