> Then if Executor.__exit__ detects an exception it would call shutdown
with cancel_futures set to True.

Oh, I see. That should be rather simple:

```
    def __exit__(self, exc_type, exc_val, exc_tb):
        if exc_val is not None and self._cancel_on_error:
            self.shutdown(wait=True, cancel_futures=True)
        else:
            self.shutdown(wait=True)
        return False
```

(I believe the above would have to be specified as an override for each of
ThreadPoolExecutor and ProcessPoolExecutor if *cancel_on_error* were
supplied as a parameter to the executor constructor. They both currently
use the ``__exit__`` specified in the abstract Executor class, which
wouldn't have access to *cancel_on_error*.)

My previous consideration about waiting for user input of
*cancel_futures *after
the release of 3.9*, *before adding *cancel_on_error* to the constructor
still applies to some degree though. If it directly uses
executor.shutdown() with cancel_futures set to True, the maintenance would
be rather minimal. But, it would potentially risk adding an underutilized
parameter to the executor constructor (which contributes to feature bloat).

On Mon, Feb 3, 2020 at 4:03 AM Miguel Ángel Prosper <
miguelangel.pros...@gmail.com> wrote:

> > Hmm, it should be possible. Do you specifically mean cancelling the
> pending
> > futures once a single one of the submitted functions raises an exception,
> > or cancelling the pending futures when the Executor itself raises an
> > exception (I.E. BrokenProcessPool)? I would assume the prior, since that
> > seems more useful to me.
>
> I was referring to any exception within the context manager of the
> executor, not the futures or just the executor's exceptions, something such
> as the following:
>
> with ThreadPoolExecutor(cancel_on_error=True) as executor:
>     # Code here
>     raise Exception
>
>  Then if Executor.__exit__ detects an exception it would call shutdown
> with cancel_futures set to True.
> _______________________________________________
> Python-ideas mailing list -- python-ideas@python.org
> To unsubscribe send an email to python-ideas-le...@python.org
> https://mail.python.org/mailman3/lists/python-ideas.python.org/
> Message archived at
> https://mail.python.org/archives/list/python-ideas@python.org/message/OAMG4JUFK54FTAASHQG5WNAA7BU7KRS7/
> Code of Conduct: http://python.org/psf/codeofconduct/
>
_______________________________________________
Python-ideas mailing list -- python-ideas@python.org
To unsubscribe send an email to python-ideas-le...@python.org
https://mail.python.org/mailman3/lists/python-ideas.python.org/
Message archived at 
https://mail.python.org/archives/list/python-ideas@python.org/message/GCKG347LGTROINXHYUVTN3IN4QTLGYRK/
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to