summaryrefslogtreecommitdiff
path: root/Lib/asyncio
diff options
context:
space:
mode:
Diffstat (limited to 'Lib/asyncio')
-rw-r--r--Lib/asyncio/base_events.py6
-rw-r--r--Lib/asyncio/events.py9
-rw-r--r--Lib/asyncio/streams.py2
-rw-r--r--Lib/asyncio/tasks.py4
-rw-r--r--Lib/asyncio/test_utils.py2
5 files changed, 20 insertions, 3 deletions
diff --git a/Lib/asyncio/base_events.py b/Lib/asyncio/base_events.py
index 2230dc2c9c..52c5517b2f 100644
--- a/Lib/asyncio/base_events.py
+++ b/Lib/asyncio/base_events.py
@@ -151,6 +151,12 @@ class BaseEventLoop(events.AbstractEventLoop):
% (self.__class__.__name__, self.is_running(),
self.is_closed(), self.get_debug()))
+ def create_task(self, coro):
+ """Schedule a coroutine object.
+
+ Return a task object."""
+ return tasks.Task(coro, loop=self)
+
def _make_socket_transport(self, sock, protocol, waiter=None, *,
extra=None, server=None):
"""Create socket transport."""
diff --git a/Lib/asyncio/events.py b/Lib/asyncio/events.py
index b389cfb088..1f5e5824e5 100644
--- a/Lib/asyncio/events.py
+++ b/Lib/asyncio/events.py
@@ -200,6 +200,10 @@ class AbstractEventLoop:
"""Return whether the event loop is currently running."""
raise NotImplementedError
+ def is_closed(self):
+ """Returns True if the event loop was closed."""
+ raise NotImplementedError
+
def close(self):
"""Close the loop.
@@ -225,6 +229,11 @@ class AbstractEventLoop:
def time(self):
raise NotImplementedError
+ # Method scheduling a coroutine object: create a task.
+
+ def create_task(self, coro):
+ raise NotImplementedError
+
# Methods for interacting with threads.
def call_soon_threadsafe(self, callback, *args):
diff --git a/Lib/asyncio/streams.py b/Lib/asyncio/streams.py
index a10b969c99..9bde218bfa 100644
--- a/Lib/asyncio/streams.py
+++ b/Lib/asyncio/streams.py
@@ -213,7 +213,7 @@ class StreamReaderProtocol(FlowControlMixin, protocols.Protocol):
res = self._client_connected_cb(self._stream_reader,
self._stream_writer)
if coroutines.iscoroutine(res):
- tasks.Task(res, loop=self._loop)
+ self._loop.create_task(res)
def connection_lost(self, exc):
if exc is None:
diff --git a/Lib/asyncio/tasks.py b/Lib/asyncio/tasks.py
index 8c7217b702..befc2967c7 100644
--- a/Lib/asyncio/tasks.py
+++ b/Lib/asyncio/tasks.py
@@ -505,7 +505,9 @@ def async(coro_or_future, *, loop=None):
raise ValueError('loop argument must agree with Future')
return coro_or_future
elif coroutines.iscoroutine(coro_or_future):
- task = Task(coro_or_future, loop=loop)
+ if loop is None:
+ loop = events.get_event_loop()
+ task = loop.create_task(coro_or_future)
if task._source_traceback:
del task._source_traceback[-1]
return task
diff --git a/Lib/asyncio/test_utils.py b/Lib/asyncio/test_utils.py
index ef3be236de..6abcaf1d37 100644
--- a/Lib/asyncio/test_utils.py
+++ b/Lib/asyncio/test_utils.py
@@ -48,7 +48,7 @@ def run_briefly(loop):
def once():
pass
gen = once()
- t = tasks.Task(gen, loop=loop)
+ t = loop.create_task(gen)
# Don't log a warning if the task is not done after run_until_complete().
# It occurs if the loop is stopped or if a task raises a BaseException.
t._log_destroy_pending = False