【问题标题】:Why is code after await is not getting executed?为什么等待之后的代码没有被执行?
【发布时间】:2020-07-02 03:15:22
【问题描述】:

我正在使用一个需要等待的函数。这之后的代码没有被执行,但是显然正在执行await函数,因为可以看到actions。但是还不清楚 await 函数是否真的完成了。

具体案例: 我正在尝试使用以下命令将我的 Discord-Bot 连接到语音通道:

vs = await message.author.voice.channel.connect()

可以看到机器人实际上正在加入频道。没有发生错误,但之后没有执行简单的打印语句。

我将不胜感激 discord.py rewrite 的具体答案,但也提示为什么 python 的 await 语句可能会阻止进一步的代码被执行。谢谢!

【问题讨论】:

    标签: python async-await discord.py


    【解决方案1】:

    根据connect documentation,调用connect()开始循环:

    这是一个运行整个事件系统和库的其他方面的循环。

    而且,它只会在连接终止时完成:

    在 WebSocket 连接终止之前,控制不会恢复。

    解决方案是注册事件回调并在新任务中使用connect(),或者如果您的应用程序不需要其他任务,则可以使用connect()/client.run()

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-11-21
      • 1970-01-01
      • 2013-09-11
      • 1970-01-01
      • 2022-11-03
      • 1970-01-01
      • 2016-05-16
      • 1970-01-01
      相关资源
      最近更新 更多