code: def on_start(
      self, worker_group: WorkerGroup, backend_config: TensorflowConfig
  ):
      # Compute URL for initializing distributed setup.
      def get_url():
          address, port = get_address_and_port()
          return f"{address}:{port}"
  
      urls = worker_group.execute(get_url)
  
      # Get setup tasks in order to throw errors on failure.
      setup_futures = []
      for i in range(len(worker_group)):
          setup_futures.append(
              worker_group.execute_single_async(
                  i,
                  _setup_tensorflow_environment,
                  worker_addresses=urls,
                  index=i,
              )
          )
      ray.get(setup_futures)
  
file_path: ray/python/ray/train/tensorflow/config.py
imports: import json
  import logging
  import os
  from dataclasses import dataclass
  from typing import List
  import ray
  from ray.train._internal.utils import get_address_and_port
  from ray.train._internal.worker_group import WorkerGroup
  from ray.train.backend import Backend, BackendConfig
  from ray.util import PublicAPI
label_desc: Use image node_id 1 for calling the _TensorflowBackend obj's underlying member method code with example usage: obj.on_start(worker_group, backend_config) and returns: address, str, port