From 283ae7bfad05fedbf6c7a7e7d7addfc3ae7ed9c7 Mon Sep 17 00:00:00 2001 From: Alexandre Flament Date: Tue, 27 Apr 2021 10:03:19 +0200 Subject: [fix] searx.network: fix rare cases where LOOP is None * searx.network.client.LOOP is initialized in a thread * searx.network.__init__ imports LOOP which may happen before the thread has initialized LOOP This commit adds a new function "searx.network.client.get_loop()" to fix this issue --- searx/network/network.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'searx/network/network.py') diff --git a/searx/network/network.py b/searx/network/network.py index 15c23d193..bb822a7d3 100644 --- a/searx/network/network.py +++ b/searx/network/network.py @@ -7,7 +7,7 @@ from itertools import cycle import httpx -from .client import new_client, LOOP +from .client import new_client, get_loop DEFAULT_NAME = '__DEFAULT__' @@ -291,8 +291,9 @@ def done(): So Network.aclose is called here using atexit.register """ try: - if LOOP: - future = asyncio.run_coroutine_threadsafe(Network.aclose_all(), LOOP) + loop = get_loop() + if loop: + future = asyncio.run_coroutine_threadsafe(Network.aclose_all(), loop) # wait 3 seconds to close the HTTP clients future.result(3) finally: -- cgit v1.2.3