def execute_pipeline_iterator(pipeline, environment_dict=None, run_config=None):
check.inst_param(pipeline, '<STR_LIT>', PipelineDefinition)<EOL>environment_dict = check.opt_dict_param(environment_dict, '<STR_LIT>')<EOL>run_config = check_run_config_param(run_config)<EOL>environment_config = create_environment_config(pipeline, environment_dict)<EOL>intermediates_manager = construct_intermediates_manager(<EOL>run_config, environment_config, pipeline<EOL>)<EOL>with _pipeline_execution_context_manager(<EOL>pipeline, environment_config, run_config, intermediates_manager<EOL>) as pipeline_context:<EOL><INDENT>return _execute_pipeline_iterator(pipeline_context)<EOL><DEDENT>
Returns iterator that yields :py:class:`SolidExecutionResult` for each
    solid executed in the pipeline.

    This is intended to allow the caller to do things between each executed
    node. For the 'synchronous' API, see :py:func:`execute_pipeline`.

    Parameters:
      pipeline (PipelineDefinition): Pipeline to run
      environment_dict (dict): The enviroment configuration that parameterizes this run
      run_config (RunConfig): Configuration for how this pipeline will be executed

    Returns:
      Iterator[DagsterEvent]