def METHOD_NAME(
    self,
    task: Optional[str] = None,
    session: Optional[Session] = None,
):
    """Run the recipe.
    This function loads the recipe into the ESMValCore recipe format
    and runs it.
    Parameters
    ----------
    task : str
        Specify the name of the diagnostic or preprocessor to run a
        single task.
    session : :obj:`Session`, optional
        Defines the config parameters and location where the recipe
        output will be stored. If ``None``, a new session will be
        started automatically.
    Returns
    -------
    output : dict
        Returns output of the recipe as instances of :obj:`OutputItem`
        grouped by diagnostic task.
    """
    if session is None:
        session = CFG.start_session(self.path.stem)
    self.last_session = session
    if task:
        session['diagnostics'] = task
    with log_to_dir(session.run_dir):
        _dask.check_distributed_config()
        self._engine = self._load(session=session)
        self._engine.METHOD_NAME()
    shutil.copy2(self.path, session.run_dir)
    output = self.get_output()
    output.write_html()
    return output