Introduction

Installation

Questions fréquemment posées

Syntaxe, mots-clés et fonctions intégrées

Distribution standard

Implémentation de import

Interface avec le navigateur

Modules intégrés propres à Brython

Travailler avec Brython

Recettes

 

module asyncio

Le module fournit une boucle d'événements basique de type asyncio pour permettre l'écriture de code asynchrone en évitant l'"enfer des loopbacks".

La programmation de style asyncio, utilisant Future et coroutine, est prise en charge. Vous pouvez par exemple écrire

import asyncio

@asyncio.coroutine
def test_wget(urls):
    results = []
    for u in urls:
        req = yield from asyncio.HTTPRequest(u)
        results.append(req.response)
    return results

t = asyncio.ensure_future(test_wget(['http://google.com','http://wikipedia.org']))

t.value() renverra une liste contenant le code html des pages demandées. Le code utilise le "future" HTTPRequest fourni par l'implémentation d'asyncio en Brython (elle prend un argument url obligatoire et des arguments optionnels method ('GET' ou 'POST') et data pour les requêtes POST).

En revanche, certaines des fonctionnalités plus avancées de asyncio ne sont pas implémentées. Soit elles n'ont pas de sens dans un navigateur (serveurs TCP, ...), soit elles auraient du sens mais ne sont pas développées (par exemple Threading/Multiprocess pourrait en thérie être implémenté avec les WebWorkers) ou ne sont pas du tout testées à ce stade (WebSocketTransport).

Pour plus d'information sur asyncio et Futures, voir PEP 3156 et PEP 3148 ou AsyncIO Documentation.