Kommunikation zwischen Node JS und Python?
Hallo,
ich programmiere aktuell einen Discord Moderations Bot. Dieser hat auch eine Nachrichten - Check funktion, die die Nachrichten auf Beleidigungen überprüft.
Die dementsprechende Prüfung würde ich aber gerne in einem Python Script ausführen.
Da es einige Anfragen sind, die beantwortet werden müssen, finde ich child processes ungeeignet.
Gibt es eine gute Möglichkeit mein Node JS Script mit dem Python Script zu verbinden? Ich hatte schon eine REST-API gemacht, dass hat auch funktioniert, aber ich könnte mir vorstellen, dass das alles durch einen Socket deutlich schneller gehen würde.
Anfangs wollte ich zeroRPC verwenden, allerdings läuft das auf node js 16 noch nicht.
Mit Socket.IO habe ich das ganze nicht laufen bekommen.
Wie würdet ihr das machen?
2 Antworten
Wenn du Python-Code ausführen willst, brauchst du den Python-Interpreter, welcher nun mal ein separater Childprocess ist. Es wäre viel einfacher, das Python Script einfach auf JS umzuschreiben.
Einfacher als irgendwas herumzubasteln, was dann nur so halb stabil läuft...
Derzeit erhöhst du nur die Komplexittät deiner Anwendung und somit auch das Ausfalls-/Fehlerrisiko. Du hast zwei unterschiedliche Systeme, die einer Wartung bedürfen und dann auch noch den Kommunikationskanal zwischen beiden. Das verschleudert in diesem Zug auch noch mehr Ressourcen, als notwendig. Allein die extra Anfrage an System 2 liefert zu viel Overhead als notwendig.
Okay, dann gucke ich nochmal ob ich das in node umgesetzt bekomme. Ich verwende eigentlich python nur, weil die funktion dort circa 10x so schnell läuft, was bei so einer überprüfung viel bringt
Mit all dem Ovehead kann ich dir aber versichern, dass sie im Endeffekt eher 10x langsamer läuft.
Da hast du vermutlicherweise recht, danke dir!
sind die auf dem selben server? und wenn nicht, warum? ist wohl leichter wie für jede anfrage eine request an einen anderen server zu schicken.
sind auf dem selben server, aber es kann eben sein, dass so 50 Nachrichten pro sekunde geprüft werden müssen
Hm, das ist nicht soo einfach :/