Descrizione
Un piccolo decoratore Python per eseguire in maniera asincrona funzioni sincrone.
Awaitable può essere utile quando si desidera eseguire in maniera asincrona
una funzione sincrona che non può essere riscritta in maniera asincrona
utilizzando await
poiché potrebbe contenere del codice che non può essere
atteso, per la presenza di librerie di terze parti oppure se alcune funzioni
sono utilizzate in altre parti del codice in maniera sincrona.
Il decoratore awaitable permette di dichiarare le funzioni sincrone come attese, in modo da poter essere eseguite da un’altra funzione asincrona.
import awaitable
@awaitable.awaitable
def do_something():
# processa un singolo task
return
AsyncioGather
La classe AsyncioGather può essere utilizzata per processare alcuni task usando asyncio, raccogliendo i task da eseguire ed eseguendoli, per processarli raggruppati in maniera asincrona.
L’esempio seguente dichiara una funzione do_something
come attesa e all’interno
della funzione process
si definisce un gruppo di task per raccogliere, anche
con argomenti differenti o funzioni asincrone differenti (sia davvero attese sia
fatte attraverso il decoratore awaitable).
Il gruppo di task sarà utilizzato per eseguire dopo attraverso run()
le chiamate
alle funzioni asincrone.
import awaitable
@awaitable.awaitable
def do_something():
# fai qualcosa con attività I/O intensa che può essere attesa
return
async def process(count):
# esegui alcuni lavori
tasks = awaitable.AsyncioGather()
for i in range(count):
tasks.add(do_something())
await tasks.run()
Utilizzando tasks.run()
tutti i task all’interno del gruppo AsyncioGather
verranno eseguiti e saranno processati in maniera asincrona.
awaitable.run_awaitable(func=process, count=10)
La funzione run_awaitable
eseguira la funzione asincrona process(count=10)
per raccogliere e processare
ogni task generato.
Installazione
I rilasci delle versioni stabili con codice sorgente e pacchetti precompilati sono presenti nella pagina Scarica. Per informazioni sull'installazione da pacchetti o con codice sorgente fare riferimento alla pagina Installazione.
Il codice sorgente di Awaitable è disponibile su GitHub con la versione attualmente in sviluppo.
Licenza
Awaitable viene distribuito sotto forma di codice sorgente aperto disponibile su GitHub sotto licenza GNU GPL-3+ (GNU General Public License versione 3 o superiore). Il software viene fornito così com'è e non è offerto alcun tipo di garanzia. Chiunque può derivare il progetto, modificarlo e distribuirlo purchè il nuovo progetto derivato sia rilasciato sotto la stessa licenza GNU GPL-3+.