--- title: "Funciones Job" url: https://docs.catalyst.zoho.com/es/serverless/help/functions/job-functions/ description: "Catalyst Functions son estructuras de código serverless, personalizadas y basadas en la nube que contienen la lógica de negocio intensiva de tu aplicación" last_updated: 2026-08-17T12:16:04Z service: Serverless type: general related_links: - name: "Job Pool Documentation" url: /es/job-scheduling/help/jobpool/introduction/ - name: "Create Job Pool" url: /es/job-scheduling/help/implementation/create-jobpool/ - name: "Submit Job to Function Job Pool" url: /es/job-scheduling/help/implementation/submit-instant-job/ - name: "Avoid Dispatch Delays When Executing Jobs" url: /es/job-scheduling/help/jobpool/key-concepts/#ideal-memory-allocation-to-avoid-dispatch-delay - name: "Java SDK" url: /es/sdk/java/v1/job-scheduling/overview/ - name: "Node.js SDK" url: /es/sdk/nodejs/v2/job-scheduling/overview/ - name: "Python SDK" url: /es/sdk/python/v1/job-scheduling/overview/ - name: "Job Scheduling REST APIs" url: /es/api/code-reference/job-scheduling/jobpool/get-all-jobpool/#GetAllJobPools --- # Funciones Job ### Introducción Las Job Functions son un tipo de función que puedes invocar cuando se ejecuta un [job](https://docs.catalyst.zoho.com/es/job-scheduling/help/job/introduction/) en un [Function Job Pool](https://docs.catalyst.zoho.com/es/job-scheduling/help/implementation/submit-instant-job/). 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](https://docs.catalyst.zoho.com/es/job-scheduling/help/jobpool/introduction/). Una Job Function es una función no HTTPS, como las [Event Functions](https://docs.catalyst.zoho.com/es/serverless/help/functions/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: * [Java](https://docs.catalyst.zoho.com/es/sdk/java/v1/job-scheduling/overview/) - `v7`, `v11` y `v17` * [Node.js](https://docs.catalyst.zoho.com/es/sdk/nodejs/v2/job-scheduling/overview/) - `v18` * [Python](https://docs.catalyst.zoho.com/es/sdk/python/v1/job-scheduling/overview/) - `v3.9` 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](https://docs.catalyst.zoho.com/es/serverless/help/functions/basic-io/) o [Advanced I/O](https://docs.catalyst.zoho.com/es/serverless/help/functions/advanced-io/). Para probar una Job Function, puedes usar el siguiente comando CLI y usar el [function shell](https://docs.catalyst.zoho.com/es/cli/v1/working-with-functions/functions-shell/). ```sh 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](https://docs.catalyst.zoho.com/es/devops/): * [Logs](https://docs.catalyst.zoho.com/es/devops/help/logs/introduction/): Puedes ver, gestionar y monitorear todas las ejecuciones relacionadas con Job Functions. * [Application Performance Monitoring](https://docs.catalyst.zoho.com/es/devops/help/apm/introduction/): 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](https://docs.catalyst.zoho.com/es/job-scheduling/help/jobpool/key-concepts/#ideal-memory-allocation-to-avoid-dispatch-delay). ### 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](https://docs.catalyst.zoho.com/es/cli/v1/initialize-resources/initialize-functions/). * Las Job Functions también se pueden crear en la consola de Serverless de Catalyst a través del [Editor](https://docs.catalyst.zoho.com/es/serverless/help/functions/implementation/#create-a-function). * 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** **Java Job Function Boilerplate** ```java 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; } } ``` **Node.js** **Node.js Job Function Boilerplate** ```javascript /** * * @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 }; ``` **Python** **Python Job Function Boilerplate** ```python 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_failure() # conclude the function execution with a failure response context.close_with_success() # conclude the function execution with a success response ``` ### Probar Job Functions usando Catalyst CLI Las Job Functions son funciones no HTTPS como las funciones [Event](https://docs.catalyst.zoho.com/es/serverless/help/functions/event-functions/) e [Integration](https://docs.catalyst.zoho.com/es/serverless/help/functions/integration-functions/). 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](https://docs.catalyst.zoho.com/es/cli/v1/working-with-functions/functions-shell/#functions-shell-command-execution) presente en el [Catalyst CLI](https://docs.catalyst.zoho.com/es/cli/v1/cli-command-reference/). El siguiente comando CLI generará un payload de ejemplo, y puedes usarlo para probar la función en el entorno local. ```sh catalyst event:generate:job 10108000007982015 // Reemplaza con el Job Pool ID requerido ``` ![catalyst_job_scheduling_job_functions_sample_payload](https://catalyst-docs-development.zohostratus.in/images/help/job-scheduling/catalyst_job_scheduling_job_functions_sample_payload.webp) Puedes alimentar este payload mientras ejecutas la Job Function requerida y validar la salida. ### Argumentos de Job Function **Java** 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](https://docs.catalyst.zoho.com/es/job-scheduling/help/job/key-concepts/#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](https://docs.catalyst.zoho.com/es/job-scheduling/help/jobpool/key-concepts/#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**. **Node.js** 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. **Python** 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.