#python-3.x #python-asyncio
#python-3.x #python-asyncio
Вопрос:
Я использую библиотеку интеллектуальных подключений Kasa. Однако, когда я запускаю
asyncio.run(self.device.update())
Я получаю сообщение об ошибке
kasa.исключения.Исключение SmartDeviceException: для доступа к данным необходимо дождаться обновления ()
Поэтому я изменил свой код на
await asyncio.run(self.device.update())
Однако это не помогло. Любая помощь приветствуется
Это мой код
import asyncio
from kasa import SmartPlug
class TpLinkHandler():
def __init__(self, address):
self.device = SmartPlug(address)
self.details = self.device.hw_info
def update(self):
await asyncio.run(self.device.update())
def shutdown(self):
asyncio.run(self.device.turn_off())
return "shutdown"
def turnOn(self):
asyncio.run(self.device.turn_on())
return "Turning on"
def __repr__(self):
return self.details
if __name__ == "__main__":
device = TpLinkHandler("192.168.0.41")
device.update()
device.turnOn()
Спасибо.
Ответ №1:
Итак, чтобы устранить эту ошибку, вам необходимо изменить функцию обновления на
async def update(self):
await self.device.update()
Комментарии:
1. Одного этого изменения недостаточно, поскольку оно изменяет способ
update
вызова.2. Правильно, ее нужно вызывать, когда асинхронная задача уже запущена