def flush_next(self): if len(self._trs_to_flush) > 0: td = self._last_flush + self._THROTTLING_DELAY - datetime.now() # Python 2.7 has this built in, python < 2.7 don't... if hasattr(td, 'total_seconds'): delay = td.total_seconds() else: delay = (td.microseconds + (td.seconds + td.days * 24 * 3600) * 10 ** 6) / 10.0 ** 6 if delay <= 0: tr = self._trs_to_flush.pop() self._last_flush = datetime.now() log.debug("Flushing transaction %d" % tr.get_id()) try: tr.flush() except Exception as e: log.exception(e) self.tr_error(tr) self.flush_next() else: # Wait a little bit more tornado_ioloop = util.get_tornado_ioloop() if tornado_ioloop._running: tornado_ioloop.add_timeout(time.time() + delay, lambda: self.flush_next()) elif self._flush_without_ioloop: # Tornado is no started (ie, unittests), do it manually: BLOCKING time.sleep(delay) self.flush_next() else: self._trs_to_flush = None
def run(self): log.info("Forwarder RUN") self._add_tornado_handlers() http_server = tornado.httpserver.HTTPServer(self) self._bind_http_server(http_server) self._ioloop = util.get_tornado_ioloop() callback = tornado.ioloop.PeriodicCallback(self.flush, self._flush_interval, io_loop=self._ioloop) callback.start() self._ioloop.start() log.info("Stopped")
def run(self): handlers = [ (r"/intake/?", AgentInputHandler), (r"/api/v1/series/?", AgentInputHandler), (r"/status/?", StatusHandler), ] settings = dict( cookie_secret="12oETzKXQAGaYdkL5gEmGeJJFuYh7EQnp2XdTP1o/Vo=", xsrf_cookies=False, debug=False, log_function=self.log_request) non_local_traffic = self._agent_config.get("non_local_traffic", False) tornado.web.Application.__init__(self, handlers, **settings) http_server = tornado.httpserver.HTTPServer(self) try: # non_local_traffic must be == True to match, not just some non-false value if non_local_traffic is True: http_server.listen(self._port) else: # localhost in lieu of 127.0.0.1 to support IPv6 try: http_server.listen(self._port, address="localhost") except socket.gaierror: log.warning( "localhost seems undefined in your host file, using 127.0.0.1 instead" ) http_server.listen(self._port, address="127.0.0.1") except socket.error as e: if "Errno 99" in str(e): log.warning( "IPv6 doesn't seem to be fully supported. Falling back to IPv4" ) http_server.listen(self._port, address="127.0.0.1") else: raise except socket.error as e: log.exception( "Socket error %s. Is another application listening on the same port ? Exiting", e) sys.exit(1) except Exception: log.exception("Uncaught exception. Forwarder is exiting.") sys.exit(1) log.info("Listening on port %d" % self._port) # Register callbacks self.mloop = util.get_tornado_ioloop() logging.getLogger().setLevel( self._agent_config.get('log_level', logging.INFO)) def flush_trs(): self._post_metrics() self._tr_manager.flush() tr_sched = tornado.ioloop.PeriodicCallback(flush_trs, self.flush_interval, io_loop=self.mloop) # Start everything tr_sched.start() self.mloop.start() log.info("Stopped")
def run(self): handlers = [ (r"/intake/?", AgentInputHandler), (r"/api/v1/series/?", AgentInputHandler), (r"/status/?", StatusHandler), ] settings = dict( cookie_secret="12oETzKXQAGaYdkL5gEmGeJJFuYh7EQnp2XdTP1o/Vo=", xsrf_cookies=False, debug=False, log_function=self.log_request ) non_local_traffic = self._agent_config.get("non_local_traffic", False) tornado.web.Application.__init__(self, handlers, **settings) http_server = tornado.httpserver.HTTPServer(self) try: # non_local_traffic must be == True to match, not just some non-false value if non_local_traffic is True: http_server.listen(self._port) else: # localhost in lieu of 127.0.0.1 to support IPv6 try: http_server.listen(self._port, address="localhost") except socket.gaierror: log.warning( "localhost seems undefined in your host file, using 127.0.0.1 instead") http_server.listen(self._port, address="127.0.0.1") except socket.error as e: if "Errno 99" in str(e): log.warning("IPv6 doesn't seem to be fully supported. Falling back to IPv4") http_server.listen(self._port, address="127.0.0.1") else: raise except socket.error as e: log.exception( "Socket error %s. Is another application listening on the same port ? Exiting", e) sys.exit(1) except Exception: log.exception("Uncaught exception. Forwarder is exiting.") sys.exit(1) log.info("Listening on port %d" % self._port) # Register callbacks self.mloop = util.get_tornado_ioloop() logging.getLogger().setLevel(self._agent_config.get('log_level', logging.INFO)) def flush_trs(): self._post_metrics() self._tr_manager.flush() tr_sched = tornado.ioloop.PeriodicCallback( flush_trs, self.flush_interval, io_loop=self.mloop) # Start everything tr_sched.start() self.mloop.start() log.info("Stopped")