[Python] comportamento def async

Andrea D'Amore and.damore a gmail.com
Mar 14 Maggio 2024 23:08:07 CEST


On Mon, 13 May 2024 at 22:19, Perini Matteo <perini.matteo a gmail.com> wrote:
> vorrei leggere lo stato di un dispositivo ewelink (sonoff) tramite script ma ricevo un comportamento che non capisco.
> Se faccio uno script isolato
[…]
> ottengo esattamente quello che voglio ovvero il print mi dice se il dispositivo è on, off o offline.

In questo script dove richiami `ask_status()`?


> Come posso fare per forzare l'esecuzione di ask_status ogni volta che richiamo la funzione check?

In genere con le parentesi dopo il nome funzione

    async def check(update: Update, context: ContextTypes.DEFAULT_TYPE):
        await context.bot.send_message(
            chat_id=update.effective_chat.id, text=ask_status(the_client)
        )

Nota che dovresti restituire la stringa in `ask_status` piuttosto che
stamparla su stdout

    @ewelink.login("Password", "email a email.eu")
    async def ask_status(client: Client) -> str:
        device = client.get_device("100000000")
        try:
            return str(device.state.value)
        except DeviceOffline:
            return "Device is offline!"


-- 
Andrea D'Amore


Maggiori informazioni sulla lista Python