Asyncio "RuntimeError: цикл обработки событий закрыт" - PullRequest
0 голосов
/ 12 мая 2018

Я пытаюсь создать Discord Bot, и он должен каждую минуту проверять API, а затем отправлять сообщение на канал.

Но по какой-то причине цикл прерывается и завершает задачу,Я впервые использую asyncio и discord.py

Traceback (most recent call last):
  File "bot.py", line 207, in <module>
    client.loop.run_forever()
  File "/usr/local/lib/python3.6/asyncio/base_events.py", line 407, in run_forever
    self._check_closed()
  File "/usr/local/lib/python3.6/asyncio/base_events.py", line 358, in _check_closed
    raise RuntimeError('Event loop is closed')
RuntimeError: Event loop is closed
Task was destroyed but it is pending!
task: <Task pending coro=<my_background_task() running at bot.py:193> wait_for=<Future pending cb=[<TaskWakeupMethWrapper object at 0xb52dbd10>()]>>

Вот исходный код скрипта: bot.py

Просто хочу иметь my_background_task () работать вечно или, по крайней мере, перезапустить, если он сломается.

1 Ответ

0 голосов
/ 17 июля 2018

Заставить бота запустить асинхронную задачу

async def bg():
    for i in range(3):
        print("Background tast")
        await asyncio.sleep(1)




@bot.event
async def on_ready():
    print("Ready!")
    bot.loop.create_task(bg())
...