L’exécution de programme montre bien l'aspect asynchrone des requêtes : La boucle 'for' est exécutée sans interruption (les lignes : début de fonction) , puis Node commence à envoyer les requêtes au serveur Nosql dans un ordre qui n'est pas celui de la boucle. Il commence par la 'clé 4' . Avec une boucle plus grande (ex : 100) on retrouve cette 'clé 4' en première requête. Cette valeur peut changer sur une autre machine. Pendant la boucle for , le gestionnaire d’évènement se contente de stocker les demandes, puis en fonction de son cycle interne , profite des interruptions pour réaliser les requêtes. Avec une boucle de 100 requêtes, les 10 premières sont en vrac puis le système se régule. Dans un système asynchrone, la fonction appelée retourne un callback (fonction de retour) et se termine. Ce callback sera appelé lors de la réalisation de l’évènement associé.
Il existe des moyens pour enchaîner des actions synchrones dans un univers asynchrone (ce n'est pas une aberration) . Le callback doit prévoir cet enchainement d'action.
exemple :
La fonction de callback fait un appel récursif tout en incrémentant la clé. A la réception de réponse du serveur, un évènement sera déclenché. La fonction callback associée à la réalisation de l'évènement sera appelé et cette fonction fournira l’enchaînement suivant. On utilise dans cet exemple des techniques de programmation fonctionnelle, ce n'est pas un hasard. Les fonctions callback se déclenchent dans un temps incertain et surtout avec des variables globales dans un état lui aussi incertain. La programmation fonctionnelle donne des modes de résolution pour ce type de problème avec des variables partagée.
Python, Ruby, javascript, node.js, cloud ,NoSQL bref que des bonnes choses
Contacter le robot germanlinux: german.eric AT gmail.com
dimanche 23 octobre 2011
Client HTTP asynchrone avec node et coffescript
Un des points forts de Node est de pouvoir programmer facilement des fonctions asynchrones. Ci dessous un exemple de programmation d'un client HTTP. Cette fonction va interroger une base NoSQL en faisant varier la clé de 0 à 4. Le programme est en coffeescript, il utilise la librairie api_request. disponible ici sur github.
Inscription à :
Publier les commentaires (Atom)
Aucun commentaire:
Enregistrer un commentaire