【发布时间】:2018-10-22 15:48:45
【问题描述】:
我正在尝试制作一个 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() 永远运行,或者至少在它中断时重新启动。
【问题讨论】:
-
你的控制台输出是什么?你有很多调试打印行,你能把打印出来的行贴出来吗?
-
看来
client.run已经无限期地运行事件循环,并关闭它。这意味着你不需要也不能在它之后调用run_forever。相反,请从您的代码中删除所有except: pass实例,这样您就可以看到实际的错误,而不是将它们隐藏在地毯下。这可能有助于调试导致client.run过早退出的潜在问题。
标签: python python-asyncio discord.py