So rufen Sie eine Python-Funktion aus Node.js
Habe ich eine Express Node.js Anwendung, aber ich habe auch ein machine-learning-Algorithmus in Python. Gibt es eine Möglichkeit, die ich anrufen kann Python-Funktionen, die von meinem Node.js Anwendung nutzen Sie die power von machine learning Bibliotheken?
- node-python. Es nie benutzt mich, aber.
- Haben Sie sich entschieden, wie zu Verfahren ist mit diesem?
- Zwei Jahre später
node-python
scheint zu sein, die ein verlassenes Projekt. - github.com/extrabacon/python-shell
- Siehe auch github.com/QQuick/Transcrypt für das kompilieren von python in javascript und dann aufrufen, es
Du musst angemeldet sein, um einen Kommentar abzugeben.
Einfachste Möglichkeit, die ich kenne ist die Verwendung von "child_process" - Paket kommt verpackt mit Knoten.
Dann können Sie etwas tun:
Dann alles, was Sie tun müssen ist, stellen Sie sicher, dass Sie
import sys
in Ihrem python-Skript, und dann können Sie den Zugriffarg1
mitsys.argv[1]
,arg2
mitsys.argv[2]
, und so weiter.Senden von Daten zurück zu Knoten, tun Sie einfach Folgendes in das python-Skript:
Dann Knoten warten können Daten mit:
Da hierbei können mehrere Argumente übergeben werden, um ein Skript mit laichen, Sie neu strukturieren kann, ein python-Skript, so dass eines der Argumente entscheidet, welche Funktion aufgerufen wird, und das andere argument übergeben bekommt, diese Funktion, etc.
Ich hoffe, das war klar. Lassen Sie mich wissen, wenn etwas zu klären.
exec
ist, dass es gibt einen Puffer, anstelle eines Streams, und wenn Sie Ihre Daten überschreitet diemaxBuffer
Einstellung, die standardmäßig auf 200kB, erhalten Sie einen Puffer überschritten Ausnahme und der Prozess getötet. Daspawn
verwendet streams, es ist flexibler alsexec
.cwd
?Beispiel für Menschen, die aus Python-hintergrund und möchten bei der Integration der machine-learning-Modell in der Node.js Anwendung:
Es nutzt die
child_process
core-Modul:Ist es nicht erforderlich
sys
- Modul in Ihrer Python-Skript.Unten ist ein modularer Art und Weise der Durchführung der Aufgabe mit
Promise
:Den
python-shell
Modul vonextrabacon
ist eine einfache Methode zum ausführen von Python-Skripts aus Node.js mit eine einfache, aber effiziente inter-Prozess-Kommunikation und eine bessere Fehlerbehandlung.Installation:
npm install python-shell
.Läuft ein einfaches Python-Skript:
Läuft ein Python-Skript mit Argumenten und Optionen:
Für die vollständige Dokumentation und der Quellcode, überprüfen Sie heraus https://github.com/extrabacon/python-shell
Den child-Prozess Modul für Node.js enthält die Funktionalität zum ausführen von Skripts oder-Befehle in anderen Sprachen als JavaScript zu (wie Python). Wir implementieren können, machine-learning-algorithmen, deep-learning-algorithmen und viele Funktionen, die über eine Python-Bibliothek in ein Node.js -Anwendung. Der Kind-Prozess-Modul ermöglicht es uns, führen Sie Python-Skript in einem Node.js Anwendung und stream in/out Daten in/aus einem Python-Skript.
child_process.spawn(): Diese Methode hilft uns, um zu laichen einen Kind-Prozess asynchron.
Erstellen wir ein einfaches Python-Skript, das zwei Kommandozeilenargumente als ersten Namen und Nachnamen und Sie dann anzeigen. Später werden wir noch das Skript auszuführen, aus einem Node.js Anwendung und display-Ausgabe im browser-Fenster.
Python-Skript:
Node.js server code:
Nach dem speichern Sie das Python-Skript und dem server-script-code, den code auszuführen, der aus seiner Quelle den Ordner, indem Sie den folgenden Befehl ein:
Bin ich auf 10 Knoten und Kind-Prozess
1.0.2
. Die Daten aus python ist ein byte-array und umgewandelt werden. Nur noch schnell ein anderes Beispiel der Herstellung einer http-Anfrage in python.Knoten
request.py
p.s. nicht ein erfundenes Beispiel, da Knoten http-Modul wird nicht geladen, ein paar Anfragen, die ich brauche, um
Könnten Sie nehmen Sie Ihre python, transpile es, und dann rufen Sie, als ob es javascript. Ich habe dies getan, erfolgreich für screeps und auch bekommen es zu laufen im browser a la brython.