def METHOD_NAME(
    self,
    allow_blocks_to_fail: bool = False,
    analyze_outputs: bool = False,
    global_vars: Dict = None,
    pipeline_run_id: int = None,
    run_sensors: bool = True,
    run_tests: bool = True,
    update_status: bool = False,
    **kwargs,
) -> None:
    """
    Executes the pipeline, handling block runs and logging.
    Args:
        allow_blocks_to_fail (bool): Whether to allow blocks to fail during execution.
        analyze_outputs (bool): Whether to analyze block outputs during execution.
        global_vars (Dict): Global variables accessible to block executions.
        pipeline_run_id (int): Identifier of the pipeline run.
        run_sensors (bool): Whether to run sensors during execution.
        run_tests (bool): Whether to run tests during execution.
        update_status (bool): Whether to update the execution status.
        **kwargs: Additional keyword arguments.
    """
    if pipeline_run_id is None:
        # Execute the pipeline without block runs
        asyncio.run(self.pipeline.METHOD_NAME(
            analyze_outputs=analyze_outputs,
            global_vars=global_vars,
            run_sensors=run_sensors,
            run_tests=run_tests,
            update_status=update_status,
        ))
    else:
        # Supported pipeline types: Standard batch pipeline
        pipeline_run = PipelineRun.query.get(pipeline_run_id)
        if pipeline_run.status != PipelineRun.PipelineRunStatus.RUNNING:
            return
        asyncio.run(self.__run_blocks(
            pipeline_run,
            allow_blocks_to_fail=allow_blocks_to_fail,
            global_vars=global_vars,
        ))
    self.logger_manager.output_logs_to_destination()