class_docstr: Runner to process incoming trial commands.
  
  Parameters
  ----------
  channel
      Channel to communicate with the management end.
      The runner only uses the "send" direction of the channel.
  runner_dir
      Directory for runner to save logs, save/restore checkpoints.
      Usually **unshared** between multiple ranks (nodes).
  trial_output_dir
      Directory for trials to save their output files.
      Subdirectory with trial IDs will be created inside.
      Usually **shared** between multiple ranks.
  trial_log_dir
      Path to where trial log is stored.
      Usually **unshared** between ranks.
  log_buffer_size
      Buffer size of trial stdout.
class_docstr_tok: ["Runner","to","process","incoming","trial","commands",".","Parameters","--","--","--","--","--","channel","Channel","to","communicate","with","the","management","end",".","The","runner","only","uses","the","``","send","''","direction","of","the","channel",".","runner_dir","Directory","for","runner","to","save","logs",",","save\/restore","checkpoints",".","Usually","*","*","unshared","*","*","between","multiple","ranks","(","nodes",")",".","trial_output_dir","Directory","for","trials","to","save","their","output","files",".","Subdirectory","with","trial","IDs","will","be","created","inside",".","Usually","*","*","shared","*","*","between","multiple","ranks",".","trial_log_dir","Path","to","where","trial","log","is","stored",".","Usually","*","*","unshared","*","*","between","ranks",".","log_buffer_size","Buffer","size","of","trial","stdout","."]
code: def _server_stop(self) -> None:
      _logger.info("Stopping trial server.")
      atexit.unregister(self._server_stop)
      self._server.shutdown()
  
imports: from __future__ import annotations
  import atexit
  import argparse
  import json
  import logging
  import os
  import subprocess
  import sys
  import threading
  import time
  from collections import deque
  from functools import partial
  from http.server import BaseHTTPRequestHandler, HTTPServer
  from pathlib import Path
  from typing import Sequence, Callable
  from .file_channel import FileChannel
  from .typehint import CreateCommand, KillCommand, MetricCommand, TrialStatusCommand, WakeUpCommand, ReportAwakeCommand, Trial, Status, typed_dict_validation
  from .utils import graceful_kill, add_handler
label_desc: Use image node_id 4 for calling the TrialRunner obj's underlying member method code with example usage: obj._server_stop() without return types