code: def run_router(
      host, port, workers=1, ssl_keyfile=None, ssl_certfile=None
  ):
      # start workers
      worker_pool = []
  
      if workers == 1:
          worker = LocalWorker(
              lambda: None,
              host=host,
              port=port,
              index=0,
              ssl_keyfile=ssl_keyfile,
              ssl_certfile=ssl_certfile,
          )
          worker_pool.append(worker)
      else:
          for i in range(1, workers + 1):
              worker_port = port + i
              worker = RemoteWorker(
                  run_worker,
                  host=host,
                  port=worker_port,
                  index=i,
                  ssl_keyfile=ssl_keyfile,
                  ssl_certfile=ssl_certfile,
              )
              worker_pool.append(worker)
              worker.start()
  
      # start routing RPC server
      server = RPCServer()
      router_pb2_grpc.add_RemoteRouterServiceServicer_to_server(
          RemoteRouterServicer(worker_pool), server.server
      )
      health_pb2_grpc.add_HealthServicer_to_server(
          HealthServicer(), server.server
      )
  
      if workers == 1:
          # add worker servicers to router as well
          registry = prepare_resource_registry()
          tracking_pb2_grpc.add_RemoteTrackingServiceServicer_to_server(
              RemoteTrackingServicer(registry), server.server
          )
  
      server.start(host, port, ssl_keyfile, ssl_certfile)
  
      # start client heartbeat service
      heartbeat_watcher = RPCHeartbeatWatcher(
          RemoteRouterServicer.client_heartbeat_pool,
          worker_pool,
      )
      heartbeat_watcher.start()
  
      _wait_forever()
  
imports: import os
  import time
  from typing import Optional
  from concurrent import futures
  from aim.ext.cleanup import AutoClean
  from aim.ext.transport.config import AIM_RT_MAX_MESSAGE_SIZE, AIM_RT_DEFAULT_MAX_MESSAGE_SIZE
  from aim.ext.transport.handlers import get_tree, get_structured_run, get_repo, get_lock, get_run_heartbeat, get_file_manager
  from aim.ext.transport.heartbeat import RPCHeartbeatWatcher
  from aim.ext.transport.worker import RemoteWorker, LocalWorker
  from aim.ext.transport.health import HealthServicer, health_pb2_grpc
  from aim.ext.transport.router import RemoteRouterServicer, router_pb2_grpc
  from aim.ext.transport.remote_tracking import RemoteTrackingServicer, tracking_pb2_grpc, ResourceTypeRegistry
label_desc: Use image node_id 3 for calling a global function with example usage: run_router(host, port, workers, ssl_keyfile, ssl_certfile) without return types