[Python] comportamento def async

Perini Matteo perini.matteo a gmail.com
Lun 13 Maggio 2024 22:18:55 CEST


Ciao,

vorrei leggere lo stato di un dispositivo ewelink (sonoff) tramite 
script ma ricevo un comportamento che non capisco.

Se faccio uno script isolato

importewelink
fromewelinkimportClient, DeviceOffline
@ewelink.login('Password', 'email a email.eu')
asyncdefask_status(client: Client):
device= client.get_device('100000000')
try:
print(device.state.value)
exceptDeviceOffline:
print("Device is offline!")

ottengo esattamente quello che voglio ovvero il print mi dice se il 
dispositivo è on, off o offline.


ho provato ad integrare la stessa funzione in uno script un po' più 
articolato per comunicare con un bot telegram.

fromtelegramimportUpdate
fromtelegram.extimportApplicationBuilder, ContextTypes, CommandHandler, 
MessageHandler, filters
fromcredentialsimportTOKEN
importewelink
fromewelinkimportClient, DeviceOffline
@ewelink.login('Password', 'email a email.eu')
asyncdefask_status(client: Client):
device= client.get_device('100000000')
try:
print(device.state.value)
exceptDeviceOffline:
print("Device is offline!")
asyncdefstart(update: Update, context: ContextTypes.DEFAULT_TYPE):
awaitcontext.bot.send_message(chat_id=update.effective_chat.id, 
text="I'm a bot, please talk to me!")
asyncdefcheck(update: Update, context: ContextTypes.DEFAULT_TYPE):
awaitcontext.bot.send_message(chat_id=update.effective_chat.id, 
text=ask_status)
if__name__== '__main__':
application= ApplicationBuilder().token(TOKEN).build()
start_handler= CommandHandler('start', start)
check_handler= CommandHandler('check', check)
application.add_handler(start_handler)
application.add_handler(check_handler)
application.run_polling()


Il bot funziona (è un po' più complicato di così) ma quando chiamo 
"ask_status" mi restituisce sempre lo stato che aveva il dispositivo 
quando faccio partire il bot.

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

Cosa mi sto perdendo?


Grazie a chi mi può dare un suggerimento

Matteo
-------------- parte successiva --------------
Un allegato HTML è stato rimosso...
URL: <http://lists.python.it/pipermail/python/attachments/20240513/8a57d3dd/attachment.html>


Maggiori informazioni sulla lista Python