class_docstr: Load a script which contains server lifecycle callbacks.
  
      
class_docstr_tok: ["Load","a","script","which","contains","server","lifecycle","callbacks","."]
docstr: Keyword Args:
      filename (str) : path to a module to load lifecycle callbacks from
  
      argv (list[str], optional) : a list of string arguments to use as
          ``sys.argv`` when the callback code is executed. (default: [])
docstr_tok: ["Keyword","Args",":","filename","(","str",")",":","path","to","a","module","to","load","lifecycle","callbacks","from","argv","(","list","[","str","]",",","optional",")",":","a","list","of","string","arguments","to","use","as","``","sys.argv","``","when","the","callback","code","is","executed",".","(","default",":","[","]",")"]
code: def __init__(
      self,
      *,
      filename: PathLike,
      argv: list[str] = [],
      package: ModuleType | None = None,
  ) -> None:
      """
  
      Keyword Args:
          filename (str) : path to a module to load lifecycle callbacks from
  
          argv (list[str], optional) : a list of string arguments to use as
              ``sys.argv`` when the callback code is executed. (default: [])
  
      """
      super().__init__()
  
      with open(filename, encoding="utf-8") as f:
          source = f.read()
  
      self._runner = CodeRunner(source, filename, argv, package=package)
  
      if not self._runner.failed:
          # unlike ScriptHandler, we only load the module one time
          self._module = self._runner.new_module()
  
          def extract_callbacks() -> None:
              contents = self._module.__dict__
              if "on_server_loaded" in contents:
                  self._on_server_loaded = contents["on_server_loaded"]
              if "on_server_unloaded" in contents:
                  self._on_server_unloaded = contents[
                      "on_server_unloaded"
                  ]
              if "on_session_created" in contents:
                  self._on_session_created = contents[
                      "on_session_created"
                  ]
              if "on_session_destroyed" in contents:
                  self._on_session_destroyed = contents[
                      "on_session_destroyed"
                  ]
  
              _check_callback(
                  self._on_server_loaded,
                  ("server_context",),
                  what="on_server_loaded",
              )
              _check_callback(
                  self._on_server_unloaded,
                  ("server_context",),
                  what="on_server_unloaded",
              )
              _check_callback(
                  self._on_session_created,
                  ("session_context",),
                  what="on_session_created",
              )
              _check_callback(
                  self._on_session_destroyed,
                  ("session_context",),
                  what="on_session_destroyed",
              )
  
          self._runner.run(self._module, extract_callbacks)
  
file_path: bokeh/src/bokeh/application/handlers/server_lifecycle.py
imports: from __future__ import annotations
  import logging
  import os
  from types import ModuleType
  from ...core.types import PathLike
  from ...util.callback_manager import _check_callback
  from .code_runner import CodeRunner
  from .lifecycle import LifecycleHandler
label_desc: Use image node_id 1 to create a new ServerLifecycleHandler object from inherited base classes: LifecycleHandler with example: obj = ServerLifecycleHandler()