code: def dispatch_job_hook(self, link, key, job_config, logfile, stream=sys.stdout):
          
          full_sub_dict = job_config.copy()
  
          if self._no_batch:
              full_command = "%s >& %s" % (
                  link.command_template().format(**full_sub_dict), logfile)
          else:
              full_sub_dict['logfile'] = logfile
              full_command_template = build_bsub_command(
                  link.command_template(), self._lsf_args)
              full_command = full_command_template.format(**full_sub_dict)
  
          logdir = os.path.dirname(logfile)
  
          print_bsub = True
          if self._dry_run:
              if print_bsub:
                  stream.write("%s\n" % full_command)
              return 0
  
          try:
              os.makedirs(logdir)
          except OSError:
              pass
          proc = subprocess.Popen(full_command.split(),
                                  stderr=stream,
                                  stdout=stream)
          proc.communicate()
          return proc.returncode
docs: Send a single job to the LSF batch
  
          Parameters
          ----------
  
          link : `fermipy.jobs.chain.Link`
              The link used to invoke the command we are running
  
          key : str
              A string that identifies this particular instance of the job
  
          job_config : dict
              A dictionrary with the arguments for the job.  Used with
              the self._command_template job template
  
          logfile : str
              The logfile for this job, may be used to check for success/ failure