Я пытаюсь объединить потоки и asyncio, чтобы включить асинхронный модуль в мой не асинхронный код. Я новичок как в объектах, так и в asyncio, поэтому любая помощь приветствуется.
import threading
import asyncio
class WatchdogManager(threading.Thread):
def __init__(self):
self.loop = asyncio.get_event_loop()
threading.Thread.__init__(self, target=self.loop_in_thread, args=(self.loop,))
def run(self):
self.watchdog_manager()
def loop_in_thread(self):
asyncio.set_event_loop(self)
self.loop.run_until_complete(self.watchdog_manager())
async def watchdog_manager(self):
print("watchdog manager initiated")
while True:
print("watchdog manager running")
await asyncio.sleep(5)
watchdog_manager = WatchdogManager()
watchdog_manager.start()
print("we can continue without being blocked")
Я получаю ошибку:
сопрограмма никогда не ожидалась
Я в основном пытаюсь превратить следующий код в объект:
import asyncio
import threading
async def greet_every_two_seconds():
while True:
print('Hello World')
await asyncio.sleep(5)
def loop_in_thread(loop):
asyncio.set_event_loop(loop)
loop.run_until_complete(greet_every_two_seconds())
loop = asyncio.get_event_loop()
t = threading.Thread(target=loop_in_thread, args=(loop,))
t.start()
print("we can continue without being blocked")