Aviso:

Para brindarle información de soporte completa de manera más rápida, el contenido de esta página ha sido traducido al español mediante traducción automática. Para consultar la información de soporte más precisa, consulte la versión en inglés de este contenido.

Iniciar un shell para Functions

Introducción

El shell de Functions te ofrece las capacidades de una consola de shell de Node combinadas con la eficiencia del Catalyst CLI, para probar y depurar tus funciones.

Usando el shell de Functions del Catalyst CLI, puedes probar y depurar los siguientes tipos de funciones de las plataformas Java, Node.js o Python en tu proyecto: Basic I/O, Cron, Event e Integration.

Nota: No podrás probar funciones Advanced I/O usando el shell de Node. Sin embargo, puedes servir funciones Advanced I/O, e incluso funciones Basic I/O y el Client, desde un host local y probar su rendimiento usando el comando catalyst serve.

La salida de la ejecución de una función se obtiene y muestra en el CLI en formato JSON. Para una función Basic I/O, la salida String se genera en el CLI, y para los otros tipos de funciones, se obtienen las respuestas apropiadas.

Mientras pruebas una función Basic I/O de los stacks Java o Node.js, también puedes adjuntar un depurador al endpoint de la función y probar su código a través de un servidor local, o habilitar el modo HTTP para ella en el shell. Esto no es compatible con funciones Python, pero puedes depurar una función Python de forma independiente.

Catalyst CLI también proporciona varias otras opciones para el shell de Functions que discutiremos más adelante en esta sección.


Ejecución del comando del shell de Functions

Para iniciar un shell para probar una función, navega al directorio del proyecto de la función y ejecuta el siguiente comando:

copy
$
catalyst functions:shell

Esto abre el shell en el CLI. Puedes probar cualquier función en tu proyecto que no sea Advanced I/O, pasar entradas y ejecutarla en el caso de una función Basic I/O, y realizar otras operaciones de shell de Node sobre ella.

Functions Shell

Puedes pasar entradas a una función Basic I/O en el shell de dos maneras:

  • Pasar valores a las variables de la función y ejecutar la función.
  • Declarar una variable en el CLI, asignarla a una variable de la función, y pasar los valores de entrada a través de la variable declarada. Luego puedes vincular la variable declarada a esa función y ejecutarla.

Ejemplo para pasar entrada directa

Probemos una función simple llamada EMI , que te permite pasar un valor de entrada para una variable llamada principal . Esta función luego calcula el monto de EMI para un servicio de envío, basándose en algunos valores constantes predefinidos.

Pasamos un valor para la variable de entrada y ejecutamos la función EMI en el shell ingresando la siguiente declaración:

copy
$
EMI({"principal":"10000"})

Esto invoca la función EMI y pasa la entrada a su variable. Una vez que la ejecución de la función se completa, la salida se obtiene del servidor como una respuesta JSON. El CLI muestra la salida de la función junto con el código de estado HTTP enviado por el servidor.

Functions Shell

Ejemplo para declarar una variable y vincularla

También puedes declarar una variable en el CLI y asignarla a la variable en la función. Esto te permitirá usar la variable declarada en lugar de la variable de la función y pasar valores de entrada fácilmente.

Declaremos una variable ‘P’, asignémosla a la variable principal en la función EMI , y pasemos un valor de entrada. Esto se puede hacer ejecutando el siguiente comando en el shell:

copy
$
var P={"principal":"3000"}

Esto asigna P a principal y pasa el valor de entrada de 3000 a P. Puedes verificar si la variable fue asignada imprimiendo el valor de P en la consola.

Esto se puede hacer usando la función de Node.js console.log() de la siguiente manera:

copy
$
console.log(P)

Si la variable fue asignada y el valor fue pasado exitosamente, el shell imprimirá el valor de principal que fue pasado.

Functions Shell

Ahora puedes vincular la variable declarada a la función y ejecutarla de la siguiente manera:

copy
$
EMI(P)

Esto invoca la función y pasa la entrada a su variable a través de P . Una vez que la ejecución de la función se completa, el CLI mostrará la salida junto con el código de estado HTTP enviado por el servidor.

Functions Shell

El CLI devolverá los códigos de respuesta HTTP apropiados del servidor si ocurren errores en tiempo de ejecución.

Salir del shell

Puedes salir del shell de Functions matando el comando de terminal según tu entorno local o ejecutando el siguiente comando:

copy
$
.exit

Una vez que tu función ha sido probada exhaustivamente, puedes desplegar la función desde el entorno local a la consola remota.

Opciones del shell de Functions

Hay cuatro opciones que puedes usar con el comando de inicio del shell de Functions.

--http [port]

La opción --http invoca tu función Basic I/O en el modo HTTP. El CLI sirve tu función a través de un host local, y te proporciona acceso a su endpoint local. El servidor estará escuchando en el puerto donde la función se aloja localmente, y el CLI mostrará un log en vivo de las actividades en el puerto. El CLI luego abrirá el shell de Functions donde puedes probar tu función.

Nota: La opción --http solo es aplicable a funciones Basic I/O, ya que los endpoints de las funciones Cron, Event e Integration no se pueden acceder directamente.

Esta opción es similar a la funcionalidad del comando catalyst serve que sirve funciones Basic I/O, funciones Advanced I/O y los componentes Client localmente.

Puedes iniciar un shell de Functions en modo HTTP y probar todas las funciones Basic I/O en un proyecto, ejecutando el siguiente comando desde el directorio del proyecto:

copy
$
catalyst functions:shell --http

Esto alojará todas las funciones Basic I/O en el directorio de Functions del proyecto localmente, en el puerto predeterminado 8080 . El CLI mostrará las URLs de los endpoints de todas las funciones. Puedes acceder a estas funciones abriendo las URLs en tu navegador en cualquier momento mientras realizas las operaciones del shell.

Functions Shell- HTTP Port

Ahora puedes probar y ejecutar tus funciones como se discutió en la sección anterior usando el shell, y verlas en modo HTTP accediendo a sus URLs.

También puedes iniciar el servidor en un puerto diferente, si lo necesitas, mientras ejecutas este comando y anular el puerto predeterminado 8080. Esto se puede hacer especificando el número de puerto con la opción --http.

Por ejemplo, si prefieres usar el puerto 7000, ejecuta este comando desde el directorio del proyecto:

copy
$
catalyst serve --http 7000

--debug [port]

Catalyst te permite probar tus funciones Java y Node.js localmente con un depurador remoto adjunto al servidor localhost en vivo.

Nota: El comando catalyst functions:shell –debug no es compatible con funciones Python. Para conocer los pasos para depurar una función Python, consulta esta sección.

Cuando usas la opción --debug e inicias el shell de Functions, Catalyst escuchará el transporte dt_socket en el puerto predeterminado o personalizado y esperará la conexión del depurador después de invocar la función. Una vez que la conexión se establece, el depurador adjunto depurará la ejecución de tu función e identificará cualquier error y problema en su código.

Puedes iniciar tu shell de Functions e iniciar la conexión al depurador ejecutando el siguiente comando desde el directorio del proyecto:

copy
$
catalyst functions:shell --debug

Esto abrirá el shell de Functions de la misma manera que antes. Cuando invoques la función en el shell, Catalyst establecerá la conexión con el depurador. Catalyst CLI asignará el puerto 8000 para el depurador por defecto.

Functions Shell- Debug

Una vez que el depurador esté adjunto, el CLI mostrará un mensaje para indicar este hecho. Catalyst luego ejecutará tu función en el modo de depuración y mostrará la respuesta del servidor.

Puedes anular el puerto predeterminado 8000 e iniciar el depurador en un puerto diferente, si es necesario. Esto se puede hacer especificando el número de puerto con la opción --debug.

Por ejemplo, si prefieres usar el puerto 7000, ejecuta el siguiente comando desde el directorio del proyecto:

copy
$
catalyst serve --debug 7000

--ignore-scripts

Esta opción te permite indicar a Catalyst que ignore los scripts de ciclo de vida pre y post escritos en el archivo catalyst.json para una función particular.

Dado que puedes alojar y acceder a los endpoints de funciones Basic I/O usando la opción --http en el shell de Functions, los scripts preserve y postserve se ejecutan automáticamente cuando se alojan. El script preserve se ejecuta antes de que la función sea servida, y el script postserve se ejecuta después de que salgas del serve local, si están disponibles.

Puedes indicar a Catalyst que ignore estos scripts de ciclo de vida pre y post cuando las funciones son servidas usando la opción --ignore-scripts.

Por ejemplo, configuremos el archivo catalyst.json de un proyecto para incluir los siguientes scripts preserve y postserve para una función.

Functions Shell- Ignore Scripts

Si inicias el shell de Functions sin usar la opción –ignore-scripts, los scripts se ejecutarán antes de que el shell se abra y después de que salgas del shell respectivamente, como se muestra a continuación.

Functions Shell- Ignore Scripts

Para ignorar los scripts preserve y postserve, inicia el shell de Functions ejecutando el siguiente comando desde el directorio de tu proyecto:

copy
$
catalyst functions:shell --ignore-scripts

Esto ignorará los scripts y ejecutará el shell de la manera estándar.

Functions Shell- Ignore Scripts

--no-watch

Catalyst CLI habilita un modo de observación en vivo en el shell de Functions por defecto. Este modo observa activamente los cambios realizados en el archivo de la función o en el directorio de la función después de que el shell se abra. Cuando detecta cambios confirmados en el archivo de la función o el directorio de la función, habilita una recarga en caliente del shell de Functions para reflejar las actualizaciones en vivo. Por lo tanto, podrás acceder a la versión actualizada de la función en el shell en vivo inmediatamente después de que los cambios se guarden, sin tener que recompilar o re-servir el código.

Puedes deshabilitar este modo de observación predeterminado iniciando el shell de Functions usando la opción --no-watch, como se muestra a continuación:

copy
$
catalyst functions:shell --no-watch

Ahora, si haces algún cambio en el archivo de la función después de haberlo iniciado en el shell, las actualizaciones no se reflejarán en la función compilada abierta en el shell. Puedes trabajar con la versión actualizada de la función ya sea reinvocando la función después de que se hayan hecho los cambios, o saliendo del shell y reabriéndolo.

Por ejemplo, consideremos una función que contiene el código de ejemplo predeterminado de una función Basic I/O de Node.js. Imprime el mensaje “Hello from index.js” cuando se invoca en el shell de Functions.

Functions Shell- No Watch

Si haces cambios en el código de la función como se muestra a continuación, estas actualizaciones no se reflejan en vivo en el CLI mientras la función aún está abierta en el shell.

Functions Shell- No Watch

Necesitarás invocar la función de nuevo para obtener la salida del código actualizado.

Functions Shell- No Watch

Sin embargo, si no usas la opción --no-watch e inicias el shell de Functions con el modo de observación predeterminado habilitado, el shell detectará los cambios realizados en el código en vivo y realizará una recarga en caliente de la función automáticamente, como se muestra a continuación.

Functions Shell- No Watch


Depuración de funciones Python

Para depurar una función Python, necesitarás usar un IDE de Python de forma independiente, ya que Catalyst actualmente no ofrece soporte del CLI para depurarlas. Puedes adjuntar un depurador local con un IDE de tu elección, como Visual Studio Code o PyCharm. El depurador escuchará en el puerto donde la función se aloja localmente y el IDE mostrará un log en vivo de las actividades en el puerto.

Los pasos para depurar una función Python usando VS Code se indican a continuación:

  1. Para depurar una función Python particular alojada en un servidor local desde un IDE directamente, necesitarás un paquete de depuración para establecer la conexión entre el servidor local y el IDE. En este caso, usaremos el paquete de Python debugpy.

Abre el directorio de tu proyecto de Catalyst en VS Code. En el archivo main.py, incluye las líneas de código indicadas a continuación.

copy
import debugpy
debugpy.listen(<<"Enter port number here">>)
debugpy.wait_for_client()
Nota: El puerto predeterminado para adjuntar en las configuraciones de debug de VS Code es 5678. Este es el puerto donde la función Python será servida. Puedes anular el puerto predeterminado y cambiarlo mientras ejecutas el comando serve, si es necesario, usando la opción especificada a continuación:
copy
$
catalyst serve –http <Port number>
  1. Navega a tu directorio de Functions y, para instalar el paquete debugpy, ejecuta este comando en la terminal de tu IDE:
copy
$
python -m pip install --upgrade debugpy
  1. Crea un archivo launch.json en el directorio raíz de tu proyecto de Catalyst, si no existe uno ya. Puedes consultar esta página de ayuda para los pasos para crear un archivo launch.json. Agrega el siguiente código en el archivo y guárdalo.
copy
{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Python: Remote Attach",
            "type": "python",
            "request": "attach",
            "connect": {
                "host": "localhost",
                "port": <>
            },
            "pathMappings": [
                {
                    "localRoot": "${workspaceFolder}",
                    "remoteRoot": "${workspaceFolder}/.build/"
                }
            ],
            "justMyCode": true
        }
    ]
}
  1. Ahora, cambia a la vista Run and Debug en VS Code e inicia el depurador. Ahora puedes ejecutar el comando CLI serve para ver los detalles de ejecución de la función en la terminal de tu IDE.
Nota: Debes asegurarte de especificar el mismo número de puerto mencionado en los archivos de configuración mientras ejecutas el comando.

Puedes consultar esta página de ayuda para pasos más detallados sobre la depuración de scripts locales de funciones Python en VS Code.

Nota: Si eres usuario de Visual Studio Code IDE, puedes instalar la extensión Catalyst Tools y realizar operaciones del CLI usando tu IDE en lugar del CLI. Los pasos para ejecutar y depurar funciones de Catalyst usando Visual Studio Code IDE se pueden encontrar aquí

Última actualización 2026-03-20 21:51:56 +0530 IST