Skip to content

Commit 2b8220c

Browse files
committed
Initialize asyncio event loop before using it
Python 3.14 (in Fedora 43) throws RunetimeError if event loop is not initialized before using it. Resolves: QubesOS/qubes-issues#10188
1 parent 2e8df5d commit 2b8220c

File tree

2 files changed

+6
-1
lines changed

2 files changed

+6
-1
lines changed

qubesidle/idleness_monitor.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -110,10 +110,13 @@ def main():
110110
if not os.path.exists('/var/run/qubes-service/shutdown-idle'):
111111
return
112112

113+
# Initialize event loop for Python 3.14 compatibility
114+
asyncio.set_event_loop(asyncio.new_event_loop())
115+
113116
monitor = IdlenessMonitor()
114117
monitor.load_watchers()
115118

116-
asyncio.get_event_loop().run_until_complete(monitor.monitor_idleness())
119+
asyncio.run(monitor.monitor_idleness())
117120

118121
subprocess.call(['sudo', 'poweroff'])
119122

qubesidle/tests_idleness_monitor.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,8 @@ def is_idle(self):
7676

7777
class MonitorTest(unittest.IsolatedAsyncioTestCase):
7878
def setUp(self):
79+
# Initialize event loop for Python 3.14 compatibility
80+
asyncio.set_event_loop(asyncio.new_event_loop())
7981
idleness_monitor.TIMEOUT_SECONDS = LOOP_TIMEOUT
8082
self.monitor = idleness_monitor.IdlenessMonitor()
8183

0 commit comments

Comments
 (0)