【问题标题】:Running a coroutine function from a noncoroutine function in Python?从 Python 中的非协程函数运行协程函数?
【发布时间】:2017-09-19 14:17:59
【问题描述】:

我正在使用 discord.py 与 discord 进行交互。

def hi():
    await client.send_message(channel, message)

出现语法错误,除非我在使用 hi() 函数时写了“异步”。 这个我真的不明白,请帮忙!

【问题讨论】:

    标签: python syntax-error coroutine discord


    【解决方案1】:

    您可以在事件循环中安排协程。您不能从非协程内部调用它们或等待它们。

    让我们检查以下代码:

    import asyncio
    
    
    async def greetLater(name, delay):
        await asyncio.sleep(delay)
        print("Hello {}!".format(name))
    
    
    def main():
        loop = asyncio.get_event_loop()
        loop.run_until_complete(greetLater("masnun", 10))
    
    
    if __name__ == '__main__':
        main()
    

    在上面的代码中,greetLater 是一个协程。我们不能直接从main 函数中调用它。我们这里需要做的是创建一个事件循环,然后在那里调度协程。我们使用asyncio 模块来帮助我们创建事件循环并运行协程。

    更多参考资料:

    (免责声明:链接到我关于该主题的个人博客文章,您可以google以获取更多参考)

    【讨论】:

    • 是否将循环传递到可以关闭的函数中,好吗?我正在做的东西可能会被其他人使用,我认为你比我更有经验。
    • 我没有完全理解这个场景,但一般来说通过循环是可以的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-01
    相关资源
    最近更新 更多