docs: def get_reloader(main_module_name, watch_modules, signal_forks=False):
      """
      Don't instantiate a reloader directly. Instead, call this method to get a reloader, and then call `main` on that
      reloader.
  
      See the documentation for `AbstractReloader.main` above to see how to call it.
  
      :param main_module_name: The main module name (such as "example_service.standalone"). It should be the value
                               that was passed to the `-m` parameter when starting the Python executable, or `None`
                               if the `-m` parameter was not used.
      :param watch_modules: If passed an iterable/generator of module names, file watching will be limited to modules
                            whose names start with one of these names (including their submodules). For example,
                            if passed `['example', 'pysoa']`, it will monitor all of PySOA's modules and submodules
                            and all of `example_service`'s modules and submodules, as well as any other modules that
                            start with `example`. If `None`, all files from all modules in all libraries, including
                            Python, will be watched.
      :param signal_forks: If `True`, this means the server process is actually multiprocessing/forking and its child
                           processes are the actual server processes. In this case, the file watcher also sends
                           `SIGHUP` in addition to `SIGTERM` to the clone process, and the clone process receives
                           this and knows to send `SIGTERM` to all of its forked child processes.
      :return: a new reloader instance.
      """
      if USE_PY_INOTIFY:
          return _PyInotifyReloader(main_module_name, watch_modules, signal_forks)
      return _PollingReloader(main_module_name, watch_modules, signal_forks)