mirror of
https://github.com/freqtrade/freqtrade.git
synced 2026-02-20 11:21:44 +00:00
fix: random hangs in CI
This commit is contained in:
@@ -127,26 +127,29 @@ class ExternalMessageConsumer:
|
||||
|
||||
self._channel_streams = {}
|
||||
|
||||
if self._sub_tasks:
|
||||
# Cancel sub tasks
|
||||
for task in self._sub_tasks:
|
||||
task.cancel()
|
||||
asyncio.run_coroutine_threadsafe(self._shutdown_async(), loop=self._loop)
|
||||
|
||||
if self._main_task:
|
||||
# Cancel the main task
|
||||
self._main_task.cancel()
|
||||
|
||||
self._thread.join()
|
||||
self._thread.join(timeout=5)
|
||||
|
||||
self._thread = None
|
||||
self._loop = None
|
||||
self._sub_tasks = None
|
||||
self._main_task = None
|
||||
|
||||
async def _shutdown_async(self):
|
||||
"""Cancel all tasks, let them finish, then stop the loop."""
|
||||
if self._sub_tasks:
|
||||
for task in self._sub_tasks:
|
||||
task.cancel()
|
||||
await asyncio.gather(*self._sub_tasks, return_exceptions=True)
|
||||
|
||||
if self._main_task:
|
||||
self._main_task.cancel()
|
||||
|
||||
self._loop.stop()
|
||||
|
||||
async def _main(self):
|
||||
"""
|
||||
The main task coroutine
|
||||
"""
|
||||
"""The main task coroutine"""
|
||||
lock = asyncio.Lock()
|
||||
|
||||
try:
|
||||
@@ -161,7 +164,8 @@ class ExternalMessageConsumer:
|
||||
pass
|
||||
finally:
|
||||
# Stop the loop once we are done
|
||||
self._loop.stop()
|
||||
if self._loop:
|
||||
self._loop.stop()
|
||||
|
||||
async def _handle_producer_connection(self, producer: Producer, lock: asyncio.Lock):
|
||||
"""
|
||||
|
||||
Reference in New Issue
Block a user