【发布时间】:2021-02-24 07:39:10
【问题描述】:
我一直在玩 API,并在捕获特定字符串时调用函数。
目前,我在函数内部使用 sys.exit 来结束脚本。但是这会导致错误:
_ClientEventTask exception was never retrieved
future: <ClientEventTask state=finished event=on_message coro=<bound method MyClient.on_message of <__main__.MyClient object at 0x123b20a00>> exception=SystemExit()>
我想优雅地关闭脚本。相关代码sn-p在这里:
class MyClient(API.Client):
async def on_message(self, message):
if (message.channel.id == XXX):
dostuff(message.content)
client = MyClient()
client.run('XXX')
我尝试了很多方法,但有点卡住了。非常感谢任何帮助,谢谢!
【问题讨论】:
-
你看过
Task.cancel()吗?这篇文章可能有用:stackoverflow.com/questions/40016501/…,以及这篇文章:code.luasoftware.com/tutorials/python/asyncio-graceful-shutdown。 -
感谢这些 - 我已经查看了它们,但不幸的是,在我的代码示例中无法找到一种简单的方法来修改我的代码以实现相同的效果。我真的只有两周的时间开始使用 python 编码(自从高中的 qbasic 以来还没有真正做过任何编码!),因此对我来说学习曲线有点陡峭。虽然这是我第一次在某事上卡了半天多哈哈。
标签: python python-asyncio