python - 在 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')
我已经尝试了很多东西,但有点卡住了。非常感谢任何帮助,谢谢!
解决方案
实现您想要的一个简单的方法是替换sys.exit()
为asyncio.get_event_loop().stop()
.
推荐阅读
- android-studio - (Ctrl + Z = 上一步)下一步呢?
- sql - 在 SQL 中显示 DateDiff 函数的小数点
- javascript - 在属性类型不同的 Javascript 对象中查找错误值?
- java - Java:反序列化和搜索对象时出现Arraylist序列化错误
- javascript - 使用 javascript 只阻止一个事件
- django - Heroku 无法识别模块 WSGI
- c# - 如何在 C# 的 COM PORT 中发送 ASCII?
- shell - 如何在 Powershell 中断开网络驱动器?
- coldfusion - 如何在 ColdFusion 中为 Google Maps 地理编码设置 API 密钥
- reactjs - 如何在反应本机导航中暂停启动屏幕 3 秒