def _make_data_ingester(self): """Determines the right data ingester, starts it, and returns it.""" flags = self.flags if flags.grpc_data_provider: ingester = server_ingester.ExistingServerDataIngester( flags.grpc_data_provider, channel_creds_type=flags.grpc_creds_type, ) ingester.start() return ingester if flags.load_fast == "true": try: return self._start_subprocess_data_ingester() except server_ingester.NoDataServerError as e: msg = "Option --load_fast=true not available: %s\n" % e sys.stderr.write(msg) sys.exit(1) except server_ingester.DataServerStartupError as e: msg = _DATA_SERVER_STARTUP_ERROR_MESSAGE_TEMPLATE % e sys.stderr.write(msg) sys.exit(1) if flags.load_fast == "auto" and _should_use_data_server(flags.logdir): try: return self._start_subprocess_data_ingester() except server_ingester.NoDataServerError as e: logger.info("No data server: %s", e) except server_ingester.DataServerStartupError as e: logger.info( "Data server error: %s; falling back to multiplexer", e) ingester = local_ingester.LocalDataIngester(flags) ingester.start() return ingester
def _make_data_provider(self): """Returns `(data_provider, deprecated_multiplexer)`.""" flags = self.flags if flags.grpc_data_provider: ingester = server_ingester.ExistingServerDataIngester( flags.grpc_data_provider, channel_creds_type=flags.grpc_creds_type, ) elif flags.load_fast: ingester = server_ingester.SubprocessServerDataIngester( logdir=flags.logdir, reload_interval=flags.reload_interval, channel_creds_type=flags.grpc_creds_type, samples_per_plugin=flags.samples_per_plugin, ) else: ingester = local_ingester.LocalDataIngester(flags) # Stash ingester so that it can avoid GCing Windows file handles. # (See comment in `SubprocessServerDataIngester.start` for details.) self._ingester = ingester ingester.start() deprecated_multiplexer = None if isinstance(ingester, local_ingester.LocalDataIngester): deprecated_multiplexer = ingester.deprecated_multiplexer return (ingester.data_provider, deprecated_multiplexer)
def _wsgi_app_v2( TensorBoardWSGIApp, logdir, plugins, reload_interval=None, path_prefix="", tensorboard_options=None, ): """WSGI app for tensorboard>=2.3.0.""" with warnings.catch_warnings(): warnings.simplefilter("ignore", Warning) # pylint: disable=no-name-in-module from tensorboard.backend.event_processing import data_ingester from tensorboard import program tb = program.TensorBoard(plugins, program.get_default_assets_zip_provider()) argv = _base_tb_args(logdir, reload_interval, path_prefix) + _extra_tb_args(tensorboard_options) log.debug("TensorBoard args: %r", argv) tb.configure(argv) ingester = data_ingester.LocalDataIngester(tb.flags) ingester.start() return TensorBoardWSGIApp( tb.flags, tb.plugin_loaders, ingester.data_provider, tb.assets_zip_provider, ingester.deprecated_multiplexer, )
def _make_data_ingester(self): flags = self.flags if flags.grpc_data_provider: return server_ingester.ExistingServerDataIngester( flags.grpc_data_provider, channel_creds_type=flags.grpc_creds_type, ) if _should_use_data_server(flags.load_fast, flags.logdir): try: server_binary = server_ingester.get_server_binary() except server_ingester.NoDataServerError as e: if flags.load_fast == "true": msg = "Option --load_fast=true not available: %s\n" % e sys.stderr.write(msg) sys.exit(1) logger.info("No data server: %s", e) else: if flags.load_fast == "auto": sys.stderr.write(_DATA_SERVER_MESSAGE) sys.stderr.flush() return server_ingester.SubprocessServerDataIngester( server_binary=server_binary, logdir=flags.logdir, reload_interval=flags.reload_interval, channel_creds_type=flags.grpc_creds_type, samples_per_plugin=flags.samples_per_plugin, ) return local_ingester.LocalDataIngester(flags)
def standard_tensorboard_wsgi(flags, plugin_loaders, assets_zip_provider): from tensorboard.backend.event_processing import data_ingester ingester = data_ingester.LocalDataIngester(flags) ingester.start() return application.TensorBoardWSGIApp( flags, plugin_loaders, ingester.data_provider, assets_zip_provider, ingester.deprecated_multiplexer)
def testCheckFilesystemSupport_notCalled(self): with mock.patch.object(tf, "__version__", new="stub"): with mock.patch.object( data_ingester, "_check_filesystem_support", autospec=True) as mock_check_filesystem_support: data_ingester.LocalDataIngester(flags=FakeFlags( logdir="logdir")) mock_check_filesystem_support.assert_not_called()
def _make_data_provider(self): """Returns `(data_provider, deprecated_multiplexer)`.""" grpc_addr = self.flags.grpc_data_provider if grpc_addr: return (self._make_grpc_provider(grpc_addr), None) else: ingester = data_ingester.LocalDataIngester(self.flags) ingester.start() return (ingester.data_provider, ingester.deprecated_multiplexer)
def _make_server(self): """Constructs the TensorBoard WSGI app and instantiates the server.""" ingester = data_ingester.LocalDataIngester(self.flags) ingester.start() app = application.TensorBoardWSGIApp( self.flags, self.plugin_loaders, ingester.data_provider, self.assets_zip_provider, ingester.deprecated_multiplexer, ) return self.server_class(app, self.flags)