Skip to content
Permalink
Browse files

bpo-34037, asyncio: add BaseEventLoop.wait_executor_on_close (GH-13786)

Add BaseEventLoop.wait_executor_on_close attribute: true by default.

loop.close() now waits for the default executor to finish by default.
Set loop.wait_executor_on_close attribute to False to not wait for
the executor.
  • Loading branch information...
vstinner committed Jun 3, 2019
1 parent 78c7d52 commit 0f0a30f4da4b529e0f7df857b9f575b231b32758
@@ -140,12 +140,18 @@ Running and stopping the loop
The loop must not be running when this function is called.
Any pending callbacks will be discarded.

This method clears all queues and shuts down the executor, but does
not wait for the executor to finish.
This method clears all queues and shuts down the default executor. By
default, it waits for the default executor to finish. Set
*loop.wait_executor_on_close* to ``False`` to not wait for the executor.

This method is idempotent and irreversible. No other methods
should be called after the event loop is closed.

.. versionchanged:: 3.8
The method now waits for the default executor to finish by default.
Added *loop.wait_executor_on_close* attribute.


.. coroutinemethod:: loop.shutdown_asyncgens()

Schedule all currently open :term:`asynchronous generator` objects to
@@ -380,6 +380,8 @@ def close(self):
class BaseEventLoop(events.AbstractEventLoop):

def __init__(self):
# If true, close() waits for the default executor to finish
self.wait_executor_on_close = True
self._timer_cancelled_count = 0
self._closed = False
self._stopping = False
@@ -635,7 +637,7 @@ def close(self):
executor = self._default_executor
if executor is not None:
self._default_executor = None
executor.shutdown(wait=False)
executor.shutdown(wait=self.wait_executor_on_close)

def is_closed(self):
"""Returns True if the event loop was closed."""
@@ -0,0 +1,4 @@
:mod:`asyncio`: ``loop.close()`` now waits for the default executor to
finish by default. Set ``loop.wait_executor_on_close`` attribute to
``False`` to opt-in for Python 3.7 behavior (not wait for the executor to
finish).

0 comments on commit 0f0a30f

Please sign in to comment.
You can’t perform that action at this time.