python - 等待和异步,协程从未被等待
问题描述
所以基本上我正在尝试编写一个可以通过python脚本控制wiz light的程序。由于其他限制,我正在使用 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 答案更详细地解释了正在使用的事件循环。
推荐阅读
- excel - IF 配方,90 天内状态
- ruby-on-rails - 是什么导致 nil:NilClass 的未定义方法“map”?
- angular - Angular ng 服务命令
- android - 来自同一应用程序的 Firebase (FCM) 分组通知点击
- javascript - 我们可以从 Web 应用程序的前端进行缩小吗?
- eclipse - Eclipse 和 Visual Studio Code 中的量角器自动内容问题
- python - cx_Freeze 的熊猫分析问题
- bash - 从给定日期计算日期
- ruby-on-rails - 使用设计实现两因素身份验证
- oracle - 我怎样才能找到所有没有参考的表