gpt4 book ai didi

python - 等待和异步,协程从未被等待

转载 作者:行者123 更新时间:2023-12-04 08:06:22 29 4
gpt4 key购买 nike

所以基本上我正在尝试编写一个可以通过 python 脚本控制 wiz 灯的程序。由于其他限制,我正在使用 python 3.6。这是我用来连接到 wizlight 的 pywizlight 项目的链接。

https://pypi.org/project/pywizlight/

我知道代码说它只能在 python 3.7 及更高版本中工作,但是我想知道是否可以让它在 3.6 中工作。我知道如果你没有 wiz 灯(也许),可能很难对此进行测试。运行时出现以下错误消息:

RuntimeWarning: 
coroutine 'wizlight.turn_on' was never awaited`
light.turn_on(PilotBuilder(brightness = 255))

代码如下:

import pywizlight
import asyncio
from pywizlight import wizlight, PilotBuilder, discovery

async def main():
loop = asyncio.get_event_loop()
task = loop.create_task(turn_off())
await task

async def turn_off():
light = wizlight("ip address of wiz bulb")
light.turn_on(PilotBuilder(brightness = 255))

loop = asyncio.get_event_loop()
loop.run_until_complete(main())

任何人都可以让它工作吗?我总共有大约 2 个脑细胞,所以我不能。

最佳答案

您是否尝试过添加 await 指令?

async def turn_off():
light = wizlight("ip address of wiz bulb")
await light.turn_on(PilotBuilder(brightness = 255))

编辑:解决评论中的其他问题

我无法测试它,因为我没有 wizlight,但您可能会发现仅创建一个事件循环并使用它从 turn_off 执行异步任务就成功了。

async def turn_off():
light = wizlight("ip address of wiz bulb")
await light.turn_on(PilotBuilder(brightness = 255))

loop = asyncio.get_event_loop()
loop.run_until_complete(turn_off())

这个其他 SO 答案解释了 event loop正在进一步详细使用。

关于python - 等待和异步,协程从未被等待,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66201921/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com