Ejecute el script de Python desde Node.js usando el método de generación de procesos secundarios()

Node.js es una de las tecnologías de desarrollo web más adoptadas, pero carece de soporte para el aprendizaje automático, el aprendizaje profundo y las bibliotecas de inteligencia artificial. Afortunadamente, Python es compatible con todas estas y muchas otras características más. Django Framework para Python puede utilizar esta funcionalidad de Python y puede proporcionar soporte para crear aplicaciones web de la nueva era utilizando el aprendizaje automático y la inteligencia artificial.

Para aquellos desarrolladores que no están familiarizados con Django Framework pero usan el marco Node JS, también pueden beneficiarse de Python usando el módulo de proceso secundario para Node JS .

El módulo Child Process para Node JS proporciona funcionalidad para ejecutar scripts o comandos en lenguajes distintos a JavaScript también (como Python). Podemos implementar algoritmos de aprendizaje automático, algoritmos de aprendizaje profundo y muchas funciones proporcionadas a través de la biblioteca de Python en la aplicación Node JS. Child Process nos permite ejecutar el script de Python en la aplicación Node JS y transmitir datos de entrada/salida hacia/desde el script de Python.

child_process.spawn(): This method helps us to spawn child process asynchronously.

 
Vamos a crear una secuencia de comandos de Python simple que tomará dos argumentos de la línea de comando como un nombre y un apellido y luego los mostrará. Más tarde, ejecutaremos ese script desde la aplicación Node JS y mostraremos el resultado en la ventana del navegador.

Escritura de Python:

import sys
# Takes first name and last name via command 
# line arguments and then display them
print("Output from Python")
print("First name: " + sys.argv[1])
print("Last name: " + sys.argv[2])
  
# save the script as hello.py

Código del servidor del Node JS:

// import express JS module into app
// and creates its variable.
var express = require('express');
var app = express();
  
// Creates a server which runs on port 3000 and 
// can be accessed through localhost:3000
app.listen(3000, function() {
    console.log('server running on port 3000');
} )
  
// Function callName() is executed whenever 
// url is of the form localhost:3000/name
app.get('/name', callName);
  
function callName(req, res) {
      
    // Use child_process.spawn method from 
    // child_process module and assign it
    // to variable spawn
    var spawn = require("child_process").spawn;
      
    // Parameters passed in spawn -
    // 1. type_of_script
    // 2. list containing Path of the script
    //    and arguments for the script 
      
    // E.g : http://localhost:3000/name?firstname=Mike&lastname=Will
    // so, first name = Mike and last name = Will
    var process = spawn('python',["./hello.py",
                            req.query.firstname,
                            req.query.lastname] );
  
    // Takes stdout data from script which executed
    // with arguments and send this data to res object
    process.stdout.on('data', function(data) {
        res.send(data.toString());
    } )
}
  
// save code as start.js

Después de guardar el script de Python y el código del script del servidor, ejecute el código desde su carpeta de origen con el siguiente comando:

 node start.js 

Accede a la aplicación a través del enlace:

localhost:3000/name?firstname="Enter first name"&lastname="Enter last name"

For e g. : localhost:3000/name?firstname=Ram&lastname=Sharma

Producción :

Aplicaciones:

  1. Este método se puede utilizar como alternativa a las REST-API.
  2. Este método puede ayudar a nuestra aplicación web a aprovechar las características especiales de otros idiomas que actualmente no están disponibles en javascript.
  3. Los módulos de aprendizaje automático se pueden implementar en Python y luego utilizarlos en la aplicación web con este método.

Referencia :

Publicación traducida automáticamente

Artículo escrito por neerajnegi174 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *