Python dans une application Node? Jouons avec Zerorpc!

Lorsque vous codez une fonction javascript avec beaucoup de manipulations de matrice et de chaîne, avez-vous déjà souhaité pouvoir simplement «importer» du python pour utiliser ses bibliothèques? J’y suis allé aussi. Surtout quand j’écrivais une application de bureau et que je ne pouvais pas utiliser mon langage préféré python. Cela m’a fait me demander, serait-il possible de concevoir l’interface avec html / css / js et d’écrire la logique métier en python? Comment allez-vous brancher les routines python dans js? Dans cet article, j’ai essayé de trouver une réponse en utilisant Zerorpc.

Le code complet de ce projet est open-source et mis à jour sur https://github.com/aswasif007/pyjs

Commençons par une brève introduction à Zerorpc . C’est une bibliothèque RPC (Remote Procedure Call) qui vous permet d’appeler une fonction pas nécessairement à partir du même ordinateur. Il crée un pont entre l’appelant et l’appelé à l’aide du protocole TCP. Vous pouvez appeler une fonction qui se trouve physiquement dans une autre partie du monde si l’ordinateur hôte possède une adresse IP publique. (Eh 😧? Pourquoi ne pas faire cela au lieu de l’API REST? Discutons-en un autre jour 😀)

Pour cette expérience, il n’est pas nécessaire de se lancer à l’international ✈️. Notre objectif ici est simple: nous avons une fonction appelée hello_world dans un fichier python, que nous voulons importer et utiliser dans un script de nœud. En termes simples, voici à quoi devraient ressembler nos fichiers py et js :

Alors, comment faisons-nous cela? Tout d’abord, nous devons créer un serveur en python pour recevoir des appels et transmettre des valeurs de retour. Nous devons également indiquer au serveur quelles fonctions autoriser js à appeler. Dans notre cas, il ne s’agit que de la fonction hello_world .

Maintenant, nous devons créer un client dans le nœud pour transmettre les appels et recevoir les valeurs de retour. Cela nous donnera l’interface dont nous avons besoin pour créer le pont entre les deux mondes.

Enfin, nous sommes prêts à créer le pont et à passer l’appel!

Que pensez-vous de cela jusqu’à présent? Je sais bien, épuisant 😫! Trop de travail. Nous avons besoin que ce soit plus simple. Comme, vous écrivez la fonction en python et boom, elle est prête à être utilisée dans node. Pas de gros punk!

Vous l’avez probablement déjà remarqué, le client écrit en javascript est assez statique. Alors, que diriez-vous que le serveur génère le client? Et les ponts aussi? 😁

L’astuce consiste à stringifier le code client et à l’écrire à partir de server.py .

Nous pouvons également conserver les fonctions exportées dans un tableau du fichier main.py et générer automatiquement les ponts.

Nous avons presque terminé! La dernière chose à faire est d’ajouter le tableau exporté dans le fichier main.py et d’y ajouter nos fonctions exportables.

Aaaand nous avons terminé! Ajoutez n’importe quelle fonction au tableau exporté et vous pourrez l’importer dans votre script de nœud 👌.

Les fragments de code fournis dans cet article sont dispersés. Je les ai compilés dans un référentiel et je les ai un peu refactorisés et romantisés, ici . J’ai également inclus un guide d’installation et des instructions d’utilisation. Assurez-vous de le vérifier! 😃