Package cherrypy :: Package test :: Module test_states_demo
[hide private]
[frames] | no frames]

Source Code for Module cherrypy.test.test_states_demo

 1  import os 
 2  import sys 
 3  import time 
 4  starttime = time.time() 
 5   
 6  import cherrypy 
 7   
 8   
9 -class Root:
10
11 - def index(self):
12 return "Hello World"
13 index.exposed = True 14
15 - def mtimes(self):
16 return repr(cherrypy.engine.publish("Autoreloader", "mtimes"))
17 mtimes.exposed = True 18
19 - def pid(self):
20 return str(os.getpid())
21 pid.exposed = True 22
23 - def start(self):
24 return repr(starttime)
25 start.exposed = True 26
27 - def exit(self):
28 # This handler might be called before the engine is STARTED if an 29 # HTTP worker thread handles it before the HTTP server returns 30 # control to engine.start. We avoid that race condition here 31 # by waiting for the Bus to be STARTED. 32 cherrypy.engine.wait(state=cherrypy.engine.states.STARTED) 33 cherrypy.engine.exit()
34 exit.exposed = True
35 36 try: 37 from signal import signal, SIGTERM 38 except ImportError: 39 pass 40 else:
41 - def old_term_handler(signum=None, frame=None):
42 cherrypy.log("I am an old SIGTERM handler.") 43 sys.exit(0)
44 signal(SIGTERM, old_term_handler) 45
46 -def unsub_sig():
47 if cherrypy.config.get('unsubsig', False): 48 cherrypy.engine.signal_handler.unsubscribe()
49 cherrypy.engine.subscribe('start', unsub_sig, priority=100) 50 51
52 -def starterror():
53 if cherrypy.config.get('starterror', False): 54 zerodiv = 1 / 0
55 cherrypy.engine.subscribe('start', starterror, priority=6) 56 57 58 cherrypy.tree.mount(Root(), '/', {'/': {}}) 59