diff options
| author | Yury Selivanov <yury@magic.io> | 2016-11-04 14:29:28 -0400 |
|---|---|---|
| committer | Yury Selivanov <yury@magic.io> | 2016-11-04 14:29:28 -0400 |
| commit | 600a349781bfa0a8239e1cb95fac29c7c4a3302e (patch) | |
| tree | 79f35114de7101a97fe85f80cd02cbd866d4abd9 /Lib/asyncio/base_events.py | |
| parent | 1ea023e523f484955fb81b59a72c586845d8d97f (diff) | |
| download | cpython-git-600a349781bfa0a8239e1cb95fac29c7c4a3302e.tar.gz | |
Issue #28613: Fix get_event_loop() to return the current loop
when called from coroutines or callbacks.
Diffstat (limited to 'Lib/asyncio/base_events.py')
| -rw-r--r-- | Lib/asyncio/base_events.py | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/Lib/asyncio/base_events.py b/Lib/asyncio/base_events.py index 5597bcb7cd..6488f23d3c 100644 --- a/Lib/asyncio/base_events.py +++ b/Lib/asyncio/base_events.py @@ -393,7 +393,10 @@ class BaseEventLoop(events.AbstractEventLoop): """Run until stop() is called.""" self._check_closed() if self.is_running(): - raise RuntimeError('Event loop is running.') + raise RuntimeError('This event loop is already running') + if events._get_running_loop() is not None: + raise RuntimeError( + 'Cannot run the event loop while another loop is running') self._set_coroutine_wrapper(self._debug) self._thread_id = threading.get_ident() if self._asyncgens is not None: @@ -401,6 +404,7 @@ class BaseEventLoop(events.AbstractEventLoop): sys.set_asyncgen_hooks(firstiter=self._asyncgen_firstiter_hook, finalizer=self._asyncgen_finalizer_hook) try: + events._set_running_loop(self) while True: self._run_once() if self._stopping: @@ -408,6 +412,7 @@ class BaseEventLoop(events.AbstractEventLoop): finally: self._stopping = False self._thread_id = None + events._set_running_loop(None) self._set_coroutine_wrapper(False) if self._asyncgens is not None: sys.set_asyncgen_hooks(*old_agen_hooks) |
