loop: replace use of asyncio.get_event_loop

The behavior of asyncio.get_event_loop() will change in a future Python
version. It is deprecated starting Python 3.10.

The functions that we can use instead are:

 * asyncio.new_event_loop() - which creates a new event loop
 * asyncio.get_running_loop() - which returns the event loop only if it
   is already running

Signed-off-by: Olivier Gayot <olivier.gayot@canonical.com>
This commit is contained in:
Olivier Gayot 2022-10-07 18:13:30 +02:00
parent 1fbef3354c
commit f0e5c19ee7
8 changed files with 17 additions and 17 deletions

View File

@ -62,7 +62,7 @@ class Upload(metaclass=urwid.MetaSignals):
def start(self): def start(self):
self.pipe_r, self.pipe_w = os.pipe() self.pipe_r, self.pipe_w = os.pipe()
fcntl.fcntl(self.pipe_r, fcntl.F_SETFL, os.O_NONBLOCK) fcntl.fcntl(self.pipe_r, fcntl.F_SETFL, os.O_NONBLOCK)
asyncio.get_event_loop().add_reader(self.pipe_r, self._progress) asyncio.get_running_loop().add_reader(self.pipe_r, self._progress)
def _progress(self): def _progress(self):
os.read(self.pipe_r, 4096) os.read(self.pipe_r, 4096)
@ -75,7 +75,7 @@ class Upload(metaclass=urwid.MetaSignals):
os.write(self.pipe_w, b'x') os.write(self.pipe_w, b'x')
def stop(self): def stop(self):
asyncio.get_event_loop().remove_reader(self.pipe_r) asyncio.get_running_loop().remove_reader(self.pipe_r)
os.close(self.pipe_w) os.close(self.pipe_w)
os.close(self.pipe_r) os.close(self.pipe_r)
@ -174,7 +174,7 @@ class ErrorReport(metaclass=urwid.MetaSignals):
_bg_add_info() _bg_add_info()
context.description = "written to " + self.path context.description = "written to " + self.path
else: else:
self._info_task = asyncio.get_event_loop().create_task(add_info()) self._info_task = asyncio.get_running_loop().create_task(add_info())
async def load(self): async def load(self):
with self._context.child("load"): with self._context.child("load"):
@ -432,7 +432,7 @@ class ErrorReporter(object):
if report is not None: if report is not None:
return report return report
loop = asyncio.get_event_loop() loop = asyncio.get_running_loop()
await self.client.errors.wait.GET(error_ref) await self.client.errors.wait.GET(error_ref)

View File

@ -268,7 +268,7 @@ class SubiquityModel:
async def wait_confirmation(self): async def wait_confirmation(self):
if self._confirmation_task is None: if self._confirmation_task is None:
self._confirmation_task = asyncio.get_event_loop().create_task( self._confirmation_task = asyncio.get_running_loop().create_task(
self._confirmation.wait()) self._confirmation.wait())
try: try:
await self._confirmation_task await self._confirmation_task

View File

@ -658,11 +658,11 @@ class FilesystemController(SubiquityController, FilesystemManipulator):
await self._probe_task.start() await self._probe_task.start()
def start_listening_udev(self): def start_listening_udev(self):
loop = asyncio.get_event_loop() loop = asyncio.get_running_loop()
loop.add_reader(self._monitor.fileno(), self._udev_event) loop.add_reader(self._monitor.fileno(), self._udev_event)
def stop_listening_udev(self): def stop_listening_udev(self):
loop = asyncio.get_event_loop() loop = asyncio.get_running_loop()
loop.remove_reader(self._monitor.fileno()) loop.remove_reader(self._monitor.fileno())
def _udev_event(self): def _udev_event(self):
@ -670,7 +670,7 @@ class FilesystemController(SubiquityController, FilesystemManipulator):
if cp.returncode != 0: if cp.returncode != 0:
log.debug("waiting 0.1 to let udev event queue settle") log.debug("waiting 0.1 to let udev event queue settle")
self.stop_listening_udev() self.stop_listening_udev()
loop = asyncio.get_event_loop() loop = asyncio.get_running_loop()
loop.call_later(0.1, self.start_listening_udev) loop.call_later(0.1, self.start_listening_udev)
return return
# Drain the udev events in the queue -- if we stopped listening to # Drain the udev events in the queue -- if we stopped listening to

View File

@ -104,7 +104,7 @@ class _CurtinCommand:
async def start(self, context, **opts): async def start(self, context, **opts):
self._fd = journald_listen( self._fd = journald_listen(
asyncio.get_event_loop(), [self._event_syslog_id], self._event) asyncio.get_running_loop(), [self._event_syslog_id], self._event)
# Yield to the event loop before starting curtin to avoid missing the # Yield to the event loop before starting curtin to avoid missing the
# first couple of events. # first couple of events.
await asyncio.sleep(0) await asyncio.sleep(0)
@ -120,7 +120,7 @@ class _CurtinCommand:
waited += 0.1 waited += 0.1
log.debug("waited %s seconds for events to drain", waited) log.debug("waited %s seconds for events to drain", waited)
self._event_contexts.pop('', None) self._event_contexts.pop('', None)
asyncio.get_event_loop().remove_reader(self._fd) asyncio.get_running_loop().remove_reader(self._fd)
return result return result
async def run(self, context): async def run(self, context):

View File

@ -29,7 +29,7 @@ def _done(fut):
def schedule_task(coro, propagate_errors=True): def schedule_task(coro, propagate_errors=True):
loop = asyncio.get_event_loop() loop = asyncio.get_running_loop()
if asyncio.iscoroutine(coro): if asyncio.iscoroutine(coro):
task = asyncio.Task(coro) task = asyncio.Task(coro)
else: else:
@ -41,7 +41,7 @@ def schedule_task(coro, propagate_errors=True):
async def run_in_thread(func, *args): async def run_in_thread(func, *args):
loop = asyncio.get_event_loop() loop = asyncio.get_running_loop()
try: try:
return await loop.run_in_executor(None, func, *args) return await loop.run_in_executor(None, func, *args)
except concurrent.futures.CancelledError: except concurrent.futures.CancelledError:

View File

@ -162,7 +162,7 @@ class BaseNetworkController(BaseController):
def stop_watching(self): def stop_watching(self):
if not self._watching: if not self._watching:
return return
loop = asyncio.get_event_loop() loop = asyncio.get_running_loop()
for fd in self._observer_fds: for fd in self._observer_fds:
loop.remove_reader(fd) loop.remove_reader(fd)
self._watching = False self._watching = False
@ -170,7 +170,7 @@ class BaseNetworkController(BaseController):
def start_watching(self): def start_watching(self):
if self._watching: if self._watching:
return return
loop = asyncio.get_event_loop() loop = asyncio.get_running_loop()
for fd in self._observer_fds: for fd in self._observer_fds:
loop.add_reader(fd, self._data_ready, fd) loop.add_reader(fd, self._data_ready, fd)
self._watching = True self._watching = True
@ -180,7 +180,7 @@ class BaseNetworkController(BaseController):
if cp.returncode != 0: if cp.returncode != 0:
log.debug("waiting 0.1 to let udev event queue settle") log.debug("waiting 0.1 to let udev event queue settle")
self.stop_watching() self.stop_watching()
loop = asyncio.get_event_loop() loop = asyncio.get_running_loop()
loop.call_later(0.1, self.start_watching) loop.call_later(0.1, self.start_watching)
return return
self.observer.data_ready(fd) self.observer.data_ready(fd)

View File

@ -70,7 +70,7 @@ class Application:
os.environ.get('SUBIQUITY_REPLAY_TIMESCALE', "1")) os.environ.get('SUBIQUITY_REPLAY_TIMESCALE', "1"))
self.updated = os.path.exists(self.state_path('updating')) self.updated = os.path.exists(self.state_path('updating'))
self.hub = MessageHub() self.hub = MessageHub()
self.aio_loop = asyncio.get_event_loop() self.aio_loop = asyncio.new_event_loop()
self.aio_loop.set_exception_handler(self._exception_handler) self.aio_loop.set_exception_handler(self._exception_handler)
self.load_controllers(self.controllers) self.load_controllers(self.controllers)
self.context = Context.new(self) self.context = Context.new(self)

View File

@ -36,5 +36,5 @@ class MessageHub:
await v await v
def broadcast(self, channel, *args, **kwargs): def broadcast(self, channel, *args, **kwargs):
loop = asyncio.get_event_loop() loop = asyncio.get_running_loop()
return loop.create_task(self.abroadcast(channel, *args, **kwargs)) return loop.create_task(self.abroadcast(channel, *args, **kwargs))