首页 > 解决方案 > 在 Python 中优雅地取消异步作业的最简单方法?

问题描述

我一直在玩 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()>

我想优雅地关闭脚本。相关的代码片段在这里:

class MyClient(API.Client):

      async def on_message(self, message):

        if (message.channel.id == XXX): 
            dostuff(message.content)

client = MyClient()

client.run('XXX')

我已经尝试了很多东西,但有点卡住了。非常感谢任何帮助,谢谢!

标签: pythonpython-asyncio

解决方案


实现您想要的一个简单的方法是替换sys.exit()asyncio.get_event_loop().stop().


推荐阅读