Asyncio с pyhon3 ожидает ошибки при использовании функции обновления для kasa

#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. Правильно, ее нужно вызывать, когда асинхронная задача уже запущена