python 当我在asyncio.create_task中收到一个错误,说“协程从未等待”时,我该怎么办?

5gfr0r5j  于 2023-05-27  发布在  Python
关注(0)|答案(1)|浏览(193)

我想用asyncio.create_task创建一个任务。但是,当我创建它时,它不起作用。我还得到一个错误,说协程是从来没有等待
我试着直接调用create_task(),而不先等待它:

async def _turn_end_timer(self):
    await asyncio.sleep(self.turn_time)
    self.next_turn()
def next_turn(self):
    if self._turn_worker is not None:
        self._turn_worker.cancel()
    if len(self.turn_queue) == 0:
        self.current_turn_username = None
        return
    self.current_turn_username = self.turn_queue.pop(0)
    coro = self._turn_end_timer()
    self._turn_worker = asyncio.create_task(coro)
    self.send_turn_queue_update()

这一招没用。事件循环正在运行:

asyncio.get_event_loop().run_until_complete(main())
asyncio.get_event_loop().run_forever()

我该怎么解决?我不想使用threading

kr98yfug

kr98yfug1#

asyncio不允许运行多个event_loop,但是如果你需要一个旁路,也就是说你已经在运行event_loop了,那么你可以使用这个库

import nest_asyncio
nest_asyncio.apply()

这将允许多线程行为

相关问题