def run(self): from diesel.app import ApplicationEnd self.running = True self.app.running.add(self) try: self.loop_callable(*self.args, **self.kw) except TerminateLoop: pass except (SystemExit, KeyboardInterrupt, ApplicationEnd): raise except ParentDiedException: pass except: log.trace().error("-- Unhandled Exception in local loop <%s> --" % self.loop_label) finally: if self.connection_stack: assert len(self.connection_stack) == 1 self.connection_stack.pop().close() self.running = False self.app.running.remove(self) self.notify_children() if self.parent and self in self.parent.children: self.parent.children.remove(self) self.parent = None if self.keep_alive: log.warning("(Keep-Alive loop %s died; restarting)" % self) self.reset() self.hub.call_later(0.5, self.wake)
def run(self): from diesel.app import ApplicationEnd self.running = True self.app.running.add(self) parent_died = False try: self.loop_callable(*self.args, **self.kw) except TerminateLoop: pass except (SystemExit, KeyboardInterrupt, ApplicationEnd): raise except ParentDiedException: parent_died = True except: log.trace().error("-- Unhandled Exception in local loop <%s> --" % self.loop_label) finally: if self.connection_stack: assert len(self.connection_stack) == 1 self.connection_stack.pop().close() self.deaths += 1 self.running = False self.app.running.remove(self) # Keep-Alive Laws # --------------- # 1) Parent loop death always kills off children. # 2) Child loops with keep-alive resurrect if their parent didn't die. # 3) If a parent has died, a child always dies. self.notify_children() if self.keep_alive and not parent_died: log.warning("(Keep-Alive loop %s died; restarting)" % self) self.reset() self.hub.call_later(0.5, self.wake) elif self.parent and self in self.parent.children: self.parent.children.remove(self) self.parent = None
def run(self): '''Start up an Application--blocks until the program ends or .halt() is called. ''' self._run = True log.warning('Starting diesel <{0}>', self.hub.describe) for s in self._services: s.bind_and_listen() s.register(self) for l in self._loops: self.hub.schedule(l.wake) self.setup() def main(): while self._run: try: self.hub.handle_events() except SystemExit: log.warning("-- SystemExit raised.. exiting main loop --") raise except KeyboardInterrupt: log.warning("-- KeyboardInterrupt raised.. exiting main loop --") break except ApplicationEnd: log.warning("-- ApplicationEnd raised.. exiting main loop --") break except Exception, e: log.error("-- Unhandled Exception rose to main loop --") log.error(traceback.format_exc()) log.info('Ending diesel application') runtime.current_app = None
def _profiled_main(): log.warning("(Profiling with cProfile)") # NOTE: Scoping Issue: # Have to rebind _main to _real_main so it shows up in locals(). _real_main = _main config = {'sort':1} statsfile = os.environ.get('DIESEL_PSTATS', None) if statsfile: config['filename'] = statsfile try: cProfile.runctx('_real_main()', globals(), locals(), **config) except TypeError, e: if "sort" in e.args[0]: del config['sort'] cProfile.runctx('_real_main()', globals(), locals(), **config) else: raise e
def run(self): '''Start up an Application--blocks until the program ends or .halt() is called. ''' profile = os.environ.get('DIESEL_PROFILE', '').lower() in YES_PROFILE track_gc = os.environ.get('TRACK_GC', '').lower() in YES_PROFILE track_gc_leaks = os.environ.get('TRACK_GC_LEAKS', '').lower() in YES_PROFILE if track_gc: gc.set_debug(gc.DEBUG_STATS) if track_gc_leaks: gc.set_debug(gc.DEBUG_LEAK) self._run = True log.warning('Starting diesel <{0}>', self.hub.describe) for s in self._services: s.bind_and_listen() s.register(self) for l in self._loops: self.hub.schedule(l.wake) self.setup() def _main(): while self._run: try: self.hub.handle_events() except SystemExit: log.warning("-- SystemExit raised.. exiting main loop --") raise except KeyboardInterrupt: log.warning( "-- KeyboardInterrupt raised.. exiting main loop --") break except ApplicationEnd: log.warning( "-- ApplicationEnd raised.. exiting main loop --") break except Exception, e: log.error("-- Unhandled Exception rose to main loop --") log.error(traceback.format_exc()) log.info('Ending diesel application') runtime.current_app = None
def run(self): '''Start up an Application--blocks until the program ends or .halt() is called. ''' profile = os.environ.get('DIESEL_PROFILE', '').lower() in YES_PROFILE track_gc = os.environ.get('TRACK_GC', '').lower() in YES_PROFILE track_gc_leaks = os.environ.get('TRACK_GC_LEAKS', '').lower() in YES_PROFILE if track_gc: gc.set_debug(gc.DEBUG_STATS) if track_gc_leaks: gc.set_debug(gc.DEBUG_LEAK) self._run = True log.warning('Starting diesel <{0}>', self.hub.describe) for s in self._services: s.bind_and_listen() s.register(self) for l in self._loops: self.hub.schedule(l.wake) self.setup() def _main(): while self._run: try: self.hub.handle_events() except SystemExit: log.warning("-- SystemExit raised.. exiting main loop --") raise except KeyboardInterrupt: log.warning("-- KeyboardInterrupt raised.. exiting main loop --") if __debug__: raise break except ApplicationEnd: log.warning("-- ApplicationEnd raised.. exiting main loop --") break except Exception, e: log.error("-- Unhandled Exception rose to main loop --") log.error(traceback.format_exc()) log.info('Ending diesel application') runtime.current_app = None
def _profiled_main(): log.warning("(Profiling with cProfile)") # NOTE: Scoping Issue: # Have to rebind _main to _real_main so it shows up in locals(). _real_main = _main config = {'sort': 1} statsfile = os.environ.get('DIESEL_PSTATS', None) if statsfile: config['filename'] = statsfile try: cProfile.runctx('_real_main()', globals(), locals(), **config) except TypeError, e: if "sort" in e.args[0]: del config['sort'] cProfile.runctx('_real_main()', globals(), locals(), **config) else: raise e
def run(self): '''Start up an Application--blocks until the program ends or .halt() is called. ''' self._run = True log.warning('Starting diesel <{0}>', self.hub.describe) for s in self._services: s.bind_and_listen() s.register(self) for l in self._loops: self.hub.schedule(l.wake) self.setup() def main(): while self._run: try: self.hub.handle_events() except SystemExit: log.warning("-- SystemExit raised.. exiting main loop --") raise except KeyboardInterrupt: log.warning( "-- KeyboardInterrupt raised.. exiting main loop --") break except ApplicationEnd: log.warning( "-- ApplicationEnd raised.. exiting main loop --") break except Exception, e: log.error("-- Unhandled Exception rose to main loop --") log.error(traceback.format_exc()) log.info('Ending diesel application') runtime.current_app = None
def _main(): while self._run: try: self.hub.handle_events() except SystemExit: log.warning("-- SystemExit raised.. exiting main loop --") raise except KeyboardInterrupt: log.warning("-- KeyboardInterrupt raised.. exiting main loop --") break except ApplicationEnd: log.warning("-- ApplicationEnd raised.. exiting main loop --") break except Exception, e: log.error("-- Unhandled Exception rose to main loop --") log.error(traceback.format_exc())
def main(): while self._run: try: self.hub.handle_events() except SystemExit: log.warning("-- SystemExit raised.. exiting main loop --") raise except KeyboardInterrupt: log.warning( "-- KeyboardInterrupt raised.. exiting main loop --") break except ApplicationEnd: log.warning( "-- ApplicationEnd raised.. exiting main loop --") break except Exception, e: log.error("-- Unhandled Exception rose to main loop --") log.error(traceback.format_exc())
def run(self): '''Start up an Application--blocks until the program ends or .halt() is called. ''' profile = os.environ.get('DIESEL_PROFILE', '').lower() in YES_PROFILE track_gc = os.environ.get('TRACK_GC', '').lower() in YES_PROFILE track_gc_leaks = os.environ.get('TRACK_GC_LEAKS', '').lower() in YES_PROFILE if track_gc: gc.set_debug(gc.DEBUG_STATS) if track_gc_leaks: gc.set_debug(gc.DEBUG_LEAK) self._run = True log.warning('Starting diesel <{0}>', self.hub.describe) for s in self._services: s.bind_and_listen() s.register(self) for l in self._loops: self.hub.schedule(l.wake) self.setup() def _main(): while self._run: try: self.hub.handle_events() except SystemExit: log.warning("-- SystemExit raised.. exiting main loop --") raise except KeyboardInterrupt: log.warning("-- KeyboardInterrupt raised.. exiting main loop --") break except ApplicationEnd: log.warning("-- ApplicationEnd raised.. exiting main loop --") break except Exception: log.error("-- Unhandled Exception rose to main loop --") log.error(traceback.format_exc()) log.info('Ending diesel application') runtime.current_app = None def _profiled_main(): log.warning("(Profiling with cProfile)") # NOTE: Scoping Issue: # Have to rebind _main to _real_main so it shows up in locals(). _real_main = _main config = {'sort':1} statsfile = os.environ.get('DIESEL_PSTATS', None) if statsfile: config['filename'] = statsfile try: cProfile.runctx('_real_main()', globals(), locals(), **config) except TypeError, e: if "sort" in e.args[0]: del config['sort'] cProfile.runctx('_real_main()', globals(), locals(), **config) else: raise e