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.

Funciones Job

Introducción

Las Job Functions son un tipo de función que puedes invocar cuando se ejecuta un job en un Function Job Pool. Programarás tu lógica de negocio personalizada en esta función, y se invocará en un momento programado cuando se ejecute un job para activar la función en el job pool.

Una Job Function es una función no HTTPS, como las Event Functions. Esta función no tendrá un endpoint, y la función solo se invocará cuando se ejecute un job en el function job pool con esta job function particular como su tipo de destino.

Puedes programar tu Job Function en los siguientes runtimes:

Al igual que las otras Serverless Functions, puedes crear, inicializar y desplegar Job Functions desde el CLI. También puedes subir tu Job Function como un archivo zip a la consola.

Sin embargo, dado que las Job Functions son funciones no HTTPS, su URL no es accesible como las funciones Basic I/O o Advanced I/O. Para probar una Job Function, puedes usar el siguiente comando CLI y usar el function shell.

copy
$
catalyst functions:shell

Una Job Function no devuelve ninguna respuesta más que determinar si la ejecución de la función fue un éxito o un fallo.

También puedes ver y monitorear el rendimiento de la Job Function usando los siguientes componentes de Catalyst DevOps:

  • Logs: Puedes ver, gestionar y monitorear todas las ejecuciones relacionadas con Job Functions.
  • Application Performance Monitoring: Puedes usar este componente para obtener información detallada sobre el rendimiento de la Job Function.
Nota: Para ejecutar una Job Function exitosamente, sin retrasos en el despacho, siempre asegúrate de que la memoria asignada de la job function sea menor que la memoria asignada del job pool. Puedes obtener más información sobre cómo prevenir retrasos en el despacho en esta sección de ayuda.

Beneficios

  • Una Job Function se puede crear, inicializar y desplegar usando el robusto CLI de Catalyst. Esto asegura que todas las dependencias requeridas para desplegar la función se instalarán automáticamente cuando inicialices la función a través del CLI.

  • Las Job Functions también se pueden crear en la consola de Serverless de Catalyst a través del Editor.

  • Las Job Functions contendrán el código boilerplate ideal con el cual puedes programar cualquier lógica de negocio personalizada, y el resto de los requisitos del backend serán manejados por Catalyst.

Código boilerplate de la función

El código boilerplate presente en la Job Function cuando la creas en la consola o la inicializas usando el CLI se muestra a continuación:

Java Job Function Boilerplate
copy

import java.util.logging.Level; import java.util.logging.Logger;

import com.catalyst.Context; import com.catalyst.job.JOB_STATUS; import com.catalyst.job.JobRequest; import com.catalyst.job.CatalystJobHandler;

import com.zc.common.ZCProject; import com.zc.component.cache.ZCCache;

public class Sample implements CatalystJobHandler {

private static final Logger LOGGER = Logger.getLogger(Sample.class.getName());

@Override public JOB_STATUS handleJobExecute(JobRequest request, Context arg1) throws Exception { try { ZCProject.initProject(); Object eventData = request.getAllJobParams(); if (eventData != null) { LOGGER.log(Level.SEVERE, "Data is" + eventData.toString()); } LOGGER.log(Level.SEVERE, "Project Details " + request.getProjectDetails().toString()); ZCCache.getInstance().putCacheValue("JobSample", "Working", 1 l); LOGGER.log(Level.SEVERE, "Inserted SucessFully:)"); } catch (Exception e) { LOGGER.log(Level.SEVERE, "Exception in Job Function", e); return JOB_STATUS.FAILURE; } return JOB_STATUS.SUCCESS; }

}

View more
Node.js Job Function Boilerplate
copy

/** *

  • @param {import("./types/job").JobRequest} jobRequest

  • @param {import("./types/job").Context} context */ module.exports = (jobRequest, context) => { console.log(‘Hello from index.js’);

    // entrada de la función: { job_details: { job_meta_details: { params: { key: ‘value’ } } } }

    /**

    • JOB REQUEST FUNCTIONALITIES */

    const projectDetails = jobRequest.getProjectDetails(); // para obtener los detalles del proyecto actual const jobDetails = jobRequest.getJobDetails(); // para obtener los detalles del job actual const jobMetaDetails = jobRequest.getJobMetaDetails(); // para obtener los metadatos del job actual const jobpoolDetails = jobRequest.getJobpoolDetails(); // para obtener los detalles del function job pool actual const getJobCapacityAttributes = jobRequest.getJobCapacityAttributes(); // para obtener la capacidad del job actual const allJobParams = jobRequest.getAllJobParams(); // para obtener todos los parámetros proporcionados a la función de job const jobParam = jobRequest.getJobParam(‘key’); // para obtener el valor de un parámetro particular proporcionado a la función de job

    /**

    • CONTEXT FUNCTIONALITIES */ context.closeWithSuccess(); //fin de la aplicación con éxito // context.closeWithFailure(); //fin de la aplicación con error };
View more
Python Job Function Boilerplate
copy

import logging

def handler(job_request, context): logger = logging.getLogger() logger.info(‘Hello from main.py’)

# function input: { job_details: { job_meta_details: { params: { key: 'value' } } } }

‘‘‘JobRequest Functionalities’’’ job_details = job_request.get_job_details() # get the details of the current job project_details = job_request.get_project_details() # get the details of the current project job_meta_details = job_request.get_job_meta_details() # get the job meta of the current job job_pool_details = job_request.get_job_pool_details() # get the current functions job pool details job_capacity_attributes = job_request.get_job_capacity_attributes() # get the current jobs capacity all_job_params = job_request.get_all_job_params() # get all the parameters supplied to the job function job_param = job_request.get_job_param(‘key’) # get the value of a particular parameter supplied to the job function

‘‘‘Context Functionalities’’’ remaining_execution_time_ms = context.get_remaining_execution_time_ms() # get the maximum allowed execution time for the job functions max_execution_time_ms = context.get_max_execution_time_ms() # get the remaining execution time for this job function

context.close_with_success() # conclude the function execution with a success response

View more

Probar Job Functions usando Catalyst CLI

Las Job Functions son funciones no HTTPS como las funciones Event e Integration. No puedes invocar una Job Function manualmente ni probarla en la consola. Sin embargo, puedes generar payloads de ejemplo y probar la función usando el Function Shell presente en el Catalyst CLI.

El siguiente comando CLI generará un payload de ejemplo, y puedes usarlo para probar la función en el entorno local.

copy
$
catalyst event:generate:job 10108000007982015 // Reemplaza con el Job Pool ID requerido

catalyst_job_scheduling_job_functions_sample_payload

Puedes alimentar este payload mientras ejecutas la Job Function requerida y validar la salida.

Argumentos de Job Function

Una Job Function de Catalyst soporta dos argumentos en Java: JobRequest y Context.

El argumento JobRequest contiene los siguientes métodos integrados:

  • JobRequest.getProjectDetails(): Se usa para obtener los detalles del proyecto, como el ID del proyecto y el nombre del proyecto.
  • JobRequest.getJobDetails(): Se usa para obtener todos los detalles del Job incluyendo el Job ID, el Job Pool con el que está asociado y el nombre del Job.
  • JobRequest.getJobMetaDetails(): Se usa para obtener todos los meta detalles del Job incluyendo detalles sobre el tiempo de ejecución, retraso en el despacho y detalles sobre los intentos de reintento.
  • JobRequest.getJobpoolDetails(): Se usa para obtener todos los detalles del Job Pool. Los detalles incluyen el Job Pool ID, el nombre del Job Pool y el tipo de Job Pool.
  • JobRequest.getJobCapacityAttributes(): Se usa para obtener todos los detalles sobre la memoria asignada para el Function Job Pool.
  • JobRequest.getAllJobParams(): Se usa para obtener todos los parámetros (pares clave-valor) pasados a la función.
  • JobRequest.getJobParam(String key): Se usa para obtener el valor de los parámetros pasando la clave como string a la función.

El argumento Context contiene los siguientes métodos integrados:

  • Context.getRemainingExecutionTimeMs(): Se puede usar para obtener el tiempo de ejecución restante de una job function.
  • Context.getMaxExecutionTimeMs(): Este método se puede usar para obtener el tiempo máximo de ejecución de una job function, que es un valor constante de 15 minutos.

Una Job Function de Catalyst soporta dos argumentos en Node.js: jobDetails y context.

El argumento jobDetails contiene los siguientes métodos integrados:

  • jobDetails.getJobDetails(): Se usa para obtener todos los detalles del Job incluyendo Job ID, el Job Pool con el que está asociado y el nombre del Job.
  • jobDetails.getJobMetaDetails(): Se usa para obtener todos los meta detalles del Job incluyendo detalles sobre el tiempo de ejecución, retraso en el despacho y detalles sobre los intentos de reintento.
  • jobDetails.getJobPoolDetails(): Se usa para obtener todos los detalles del Job Pool. Los detalles incluyen Job Pool ID, nombre del Job Pool y tipo de Job Pool.
  • jobDetails.getProjectDetails(): Se usa para obtener los detalles del proyecto, como el ID del proyecto y el nombre del proyecto.
  • jobDetails.getJobCapacityAttributes(): Se usa para obtener todos los detalles sobre la memoria asignada para el Function Job Pool.
  • jobDetails.getAllJobParams(): Se usa para obtener todos los parámetros (pares clave-valor) pasados a la función.
  • jobDetails.getJobParam(key): Se usa para obtener el valor de los parámetros pasando la clave como string a la función.

El argumento context contiene los siguientes métodos integrados:

  • context.getRemainingExecutionTimeMs(): Se puede usar para obtener el tiempo de ejecución restante de una job function.
  • context.getMaxExecutionTimeMs(): Este método se puede usar para obtener el tiempo máximo de ejecución de una job function, que es un valor constante de 15 minutos.
  • context.closeWithSuccess(): Este método se puede usar para marcar la ejecución de un job como exitosa.
  • context.closeWithFailure(): Este método se puede usar para marcar la ejecución de un job como fallida.

Una Job Function de Catalyst soporta dos argumentos en Python: job_details y context.

El argumento job_details contiene los siguientes métodos integrados:

  • job_details.get_job_details(): Se usa para obtener todos los detalles del Job incluyendo Job ID, el Job Pool con el que está asociado y el nombre del Job.
  • job_details.get_job_meta_details(): Se usa para obtener todos los meta detalles del Job incluyendo detalles sobre el tiempo de ejecución, retraso en el despacho y detalles sobre los intentos de reintento.
  • job_details.get_job_pool_details(): Se usa para obtener todos los detalles del Job Pool. Los detalles incluyen Job Pool ID, nombre del Job Pool y tipo de Job Pool.
  • job_details.get_project_details(): Se usa para obtener los detalles del proyecto, como el ID del proyecto y el nombre del proyecto.
  • job_details.get_job_capacity_attributes(): Se usa para obtener todos los detalles sobre la memoria asignada para el Function Job Pool.
  • job_details.get_all_job_params(): Se usa para obtener todos los parámetros (pares clave-valor) pasados a la función.
  • job_details.get_job_param(key): Se usa para obtener el valor de los parámetros pasando la clave como string a la función.

El argumento context contiene los siguientes métodos integrados:

  • context.get_remaining_execution_time_ms(): Se puede usar para obtener el tiempo de ejecución restante de una job function.
  • context.get_max_execution_time_ms(): Este método se puede usar para obtener el tiempo máximo de ejecución de una job function, que es un valor constante de 15 minutos.
  • context.close_with_success(): Este método se puede usar para marcar la ejecución de un job como exitosa.
  • context.close_with_failure(): Este método se puede usar para marcar la ejecución de un job como fallida.

Última actualización 2026-03-24 17:38:39 +0530 IST