Crear y configurar trabajos cron

Usa Cloud Scheduler para configurar unidades de trabajo programadas, conocidas como trabajos cron, que se envían a los objetivos en algún programa recurrente, también llamado intervalo o frecuencia de trabajo.

Solo se debe ejecutar una instancia de trabajo a la vez. En raras circunstancias, es posible que se soliciten varias instancias del mismo trabajo. Como resultado, el controlador de solicitudes debe ser idempotente, y tu código debe asegurarse de que no haya efectos secundarios dañinos si esto ocurre.

Cloud Scheduler está diseñado para trabajos recurrentes. Si necesitas ejecutar un trabajo solo una vez, considera usar Cloud Tasks, que puede programar una tarea con hasta 30 días de anticipación.

Antes de comenzar

Asegúrate de haber configurado tu entorno para Cloud Scheduler.

Crea un trabajo

Puedes crear un trabajo con Google Cloud Console o la CLI de Google Cloud.

Console

  1. En Google Cloud Console, ve a Cloud Scheduler.

    Ir a Cloud Scheduler

  2. Haz clic en Create job (Crear trabajo).

  3. En el campo Nombre, proporciona un nombre para el trabajo que sea exclusivo del proyecto.

    Después de borrar su trabajo asociado, puedes volver a usar el nombre de un trabajo en un proyecto.

  4. En la lista Región, selecciona una región.

    Si usas un destino HTTP de App Engine, debes elegir la misma región que tu app de App Engine. Para obtener más información, consulta Regiones compatibles por destino.

  5. De forma opcional, proporciona una breve descripción del trabajo, como un recordatorio de lo que este hace.

    Esta descripción aparece en la consola junto al nombre del trabajo.

  6. Especifica la frecuencia a la que se ejecutará el trabajo mediante una string de configuración.

    Por ejemplo, la string 0 1 * * 0 ejecuta el trabajo una vez a la semana a la 1 a.m. todos los domingos por la mañana. La string que proporcionas aquí puede ser cualquier string compatible con unix-cron. Para obtener más información, consulta Configura programas de trabajos cron.

  7. En la lista Zona horaria, elige la zona horaria que se usará para la programación del trabajo.

  8. Haga clic en Continuar.

  9. Especifique el Tipo de destino:

  10. Haga clic en Continuar.

  11. De manera opcional, haz clic en Establece la configuración opcional para establecer cualquier comportamiento de reintento. Para especificar la duración, usa una secuencia de números enteros decimales no negativos con los siguientes sufijos de unidad:

    • h: hora
    • m: minuto
    • s: segundo
    • ms: milisegundo
    • us: microsegundo
    • ns: nanosegundo

    No se permiten valores fraccionarios ni negativos. El campo Max retry duration solo admite valores h, m y s. Tanto Min backoff duration como Max backoff duration admiten el conjunto completo.

  12. De manera opcional, para los objetivos HTTP y App Engine HTTP, configura un plazo para los intentos de trabajo. Si el controlador de solicitudes no responde dentro de este plazo, la solicitud se cancela y se marca el intento como con errores. Cloud Scheduler vuelve a intentar el trabajo según la configuración de reintentos.

  13. Para crear y guardar el trabajo, haz clic en Crear.

    Ahora, el trabajo se ejecutará con la frecuencia especificada.

gcloud

Cuando creas un trabajo con la CLI de gcloud, usas diferentes comandos para cada tipo de objetivo. Para ver los comandos de muestra, haz clic en un destino:

Destino de Pub/Sub

Si eliges el tipo de objetivo Pub/Sub:

  1. Especifica el nombre del tema en el que se publicará el trabajo. Este es un tema de Pub/Sub que ya configuraste en tu proyecto.

  2. Especifica el mensaje que se enviará al tema. Esto se envía como el parámetro data dentro del mensaje de Pub/Sub. Para ver un ejemplo en el que se hace esto, consulta la Guía de inicio rápido.

  3. Agrega los atributos de mensaje que necesites.

  4. Establece cualquier configuración adicional mediante la sección Configure optional settings.

Cloud Scheduler publicará mensajes en este tema como una cuenta de servicio de las API de Google.

Destino HTTP de App Engine

Si eliges el tipo de objetivo HTTP de App Engine, debes usar la aplicación de App Engine y la región asociada con el proyecto actual. Si deseas usar alguna otra aplicación de App Engine fuera del proyecto actual, elige HTTP como destino, no HTTP de App Engine.

Configura el formulario como se indica a continuación:

  1. En la lista Tipo de destino, selecciona App Engine HTTP.

  2. Especifica el nombre del servicio de App Engine que ejecuta el controlador para el trabajo de Cloud Scheduler. Si se omite, se supone que se usa el servicio default. Si deseas configurarlo, puedes encontrar los nombres de los servicios en Google Cloud Console.

  3. De manera opcional, especifica la versión. Si no se establece, se usa la versión en uso actual. Puedes encontrar las versiones disponibles en Google Cloud Console.

  4. De manera opcional, especifica la instancia. Si no se configura, se puede usar cualquier instancia disponible. Puedes encontrar las versiones disponibles en Google Cloud Console.

  5. Especifica la URL relativa del extremo de App Engine con el que se contactará el trabajo. Si usas el valor predeterminado /, el trabajo usará PROJECT-ID.appspot.com, en el que PROJECT-ID es tu ID del proyecto actual.

  6. Configura el método HTTP que quieres usar cuando se ejecute el trabajo. El valor predeterminado es POST.

  7. Agrega los encabezados que necesitas a la solicitud.

  8. De manera opcional, especifica los datos del cuerpo que se enviarán al destino. Estos datos se envían en el cuerpo de la solicitud como bytes cuando se selecciona el método HTTP POST o PUT.

Los extremos de App Engine orientados deben estar en el mismo proyecto y se pueden proteger con login: admin en el elemento handlers del archivo app.yaml.

Destino HTTP

Si eliges el tipo de objetivo HTTP, haz lo siguiente:

  1. Especifique la URL completamente calificada del extremo con el que se pondrá en contacto el trabajo.

  2. Especifica el método HTTP. El valor predeterminado es POST.

  3. De manera opcional, especifica los datos que se enviarán al destino. Estos datos se envían en el cuerpo de la solicitud como bytes cuando se selecciona el método HTTP POST o PUT.

  4. Agrega los encabezados que necesites.

  5. Para crear un trabajo de destino HTTP que requiera autenticación, consulta Usa la autenticación con objetivos HTTP.

Los extremos HTTP objetivo deben ser de acceso público.

Destino de Pub/Sub

Debes usar un tema de Pub/Sub que ya configuraste en tu proyecto. Cloud Scheduler publicará mensajes en este tema como una cuenta de servicio de las API de Google.

Sintaxis

gcloud scheduler jobs create pubsub JOB --location=LOCATION --schedule=SCHEDULE --topic=TOPIC (--message-body=MESSAGE_BODY | --message-body-from-file=MESSAGE_BODY_FROM_FILE) [optional flags]

Para usar el destino de Pub/Sub en la línea de comando:

  1. En JOB, especifica un nombre del trabajo. Debe ser único en el proyecto. Ten en cuenta que no puedes reutilizar un nombre de trabajo en un proyecto, incluso si borras su trabajo asociado.

  2. Especifica la ubicación. Si no se especifica, se usa la ubicación de la aplicación actual de App Engine del proyecto, si existe.

  3. Especifica el programa, también llamado frecuencia, o intervalo de trabajo, en el que se ejecutará el trabajo, por ejemplo, “every 3 hours”. La string que proporciones aquí puede ser cualquier string compatible con unix-cron. También puedes usar la Sintaxis cron de App Engine heredada para describir el programa.

Para obtener más información, consulta Configura programas de trabajo.

  1. Especifica el nombre del tema en el que se publicará el trabajo.

  2. Especifica el mensaje que se enviará al tema. Esto se envía como el parámetro data dentro del mensaje de Pub/Sub. Para ver un ejemplo que realice esta acción, consulta la Guía de inicio rápido.

  3. Hay otros parámetros opcionales disponibles, como zona horaria, atributos, reintentos y otros parámetros, que se describen en la referencia de la línea de comandos de gcloud

Línea de comandos de muestra:

    gcloud scheduler jobs create pubsub myjob --schedule "0 1 * * 0" --topic cron-topic --message-body "Hello"

Destino HTTP de App Engine

El objetivo App Engine HTTP solo está disponible para la aplicación de App Engine asociada con el proyecto actual. Si deseas usar otra aplicación de App Engine fuera del proyecto actual, elige HTTP como destino, no App Engine HTTP.

Los extremos de App Engine se pueden proteger con login: admin en el elemento handlers en el archivo app.yaml.

Sintaxis

gcloud scheduler jobs create app-engine JOB --location=LOCATION --schedule=SCHEDULE [optional flags]

Para utilizar el comando App Engine HTTP target:

  1. En JOB, especifica un nombre del trabajo. Debe ser único en el proyecto. Ten en cuenta que no puedes reutilizar un nombre de trabajo en un proyecto, incluso si borras su trabajo asociado.

  2. Especifica la ubicación. Debe ser la misma ubicación que tu aplicación de App Engine.

  3. Especifica el programa, también llamado frecuencia, o intervalo de trabajo, en el que se ejecutará el trabajo, por ejemplo, “every 3 hours”. La string que proporciones aquí puede ser cualquier string compatible con unix-cron. También puedes usar la Sintaxis cron de App Engine heredada para describir el programa.

Para obtener más información, consulta Configura programas de trabajo.

  1. Especifica la URL relativa del extremo de App Engine con la que se comunicará el trabajo. Si usas el valor predeterminado /, el trabajo usará PROJECT-ID.appspot.com en el que PROJECT-ID es tu ID del proyecto actual.

  2. Especifica el nombre del servicio de App Engine que ejecuta el controlador para el trabajo de Cloud Scheduler. Si se omite, se supone el servicio default. Si deseas configurarlo, puedes encontrar los nombres de los servicios en Google Cloud Console.

  3. De forma opcional, configura el método HTTP que desees usar cuando se ejecute el trabajo. El valor predeterminado es POST.

  4. De manera opcional, especifica la versión. Si no se establece, se usa la versión en uso actual. Puedes encontrar las versiones disponibles en Google Cloud Console.

  5. De manera opcional, especifica la instancia. Si no se configura, se puede usar cualquier instancia disponible. Puedes encontrar las versiones disponibles en Google Cloud Console.

  6. De manera opcional, especifica los datos que se enviarán al destino. Estos datos se envían en el cuerpo de la solicitud como bytes cuando se selecciona el método HTTP POST o PUT.

  7. De forma opcional, configura los valores de reintento, que especifican cómo se reintenta el trabajo de App Engine en caso de falla. En la mayoría de los casos, los valores predeterminados serán suficientes. Para obtener más información, consulta la referencia de línea de comandos de gcloud.

  8. Hay otros parámetros opcionales disponibles, como la zona horaria, la descripción y otros parámetros, que se describen en la referencia de la línea de comandos de gcloud

Línea de comandos de muestra

 gcloud scheduler jobs create app-engine my-appengine-job --schedule "0 1 * * 0" --relative-url "/cron-handler"

Destino HTTP

Puede enviar una solicitud a cualquier extremo HTTP o HTTPS. Los extremos HTTP objetivos deben ser de acceso público.

Sintaxis

gcloud scheduler jobs create http JOB --location-LOCATION --schedule=SCHEDULE --uri=URI [optional flags]

Para utilizar el comando HTTP target:

  1. En JOB, especifica un nombre del trabajo. Debe ser único en el proyecto. Ten en cuenta que no puedes reutilizar un nombre de trabajo en un proyecto, incluso si borras su trabajo asociado.

  2. Especifica la ubicación. Si no se especifica, se usa la ubicación de la aplicación actual de App Engine del proyecto, si existe.

  3. Especifica el programa, también llamado frecuencia, o intervalo de trabajo, en el que se ejecutará el trabajo, por ejemplo, “every 3 hours”. La string que proporciones aquí puede ser cualquier string compatible con unix-cron. También puedes usar la Sintaxis cron de App Engine heredada para describir el programa.

Para obtener más información, consulta Configura programas de trabajo.

  1. Especifica el URI completamente calificado del extremo con el que se contactará el trabajo.

  2. De forma opcional, especifica el método HTTP. El valor predeterminado es POST.

  3. De manera opcional, especifica los datos que se enviarán al destino. Estos datos se envían en el cuerpo de la solicitud como bytes cuando se selecciona el método HTTP POST o PUT.

  4. De forma opcional, configura los valores de reintento, que especifican cómo se reintenta el trabajo de App Engine en caso de falla. En la mayoría de los casos, los valores predeterminados serán suficientes. Para obtener más información, consulta la referencia de línea de comandos de gcloud.

  5. Hay otros parámetros opcionales disponibles, como la zona horaria, la descripción y otros parámetros, que se describen en la referencia de la línea de comandos de gcloud

  6. Para crear un trabajo de destino HTTP que requiera autenticación, consulte Uso de autenticación con destinos HTTP

Línea de comandos de muestra

 gcloud scheduler jobs create http my-http-job --schedule "0 1 * * 0" --uri "http://myproject/my-url.com" --http-method GET

Editar un trabajo

Puede editar la configuración de un trabajo.

Console

  1. En Google Cloud Console, ve a Cloud Scheduler.

    Ir a Cloud Scheduler

  2. Selecciona el trabajo que quieres editar.

  3. Haga clic en Editar.

  4. Sigue los pasos para definir la programación, establecer la ejecución y establecer las opciones opcionales cuando crees un trabajo.

gcloud

Cuando editas un trabajo con la CLI de gcloud, usas comandos diferentes para cada tipo de objetivo. Para ver los comandos de muestra, haz clic en un destino:

Cómo pausar un trabajo

Puede pausar la ejecución de un trabajo.

Console

  1. En Google Cloud Console, ve a Cloud Scheduler.

    Ir a Cloud Scheduler

  2. Selecciona el trabajo que quieres pausar.

  3. Haga clic en Detener.

gcloud

  1. Abre una ventana de la terminal en la máquina en la que instalaste la CLI de gcloud.

  2. Ejecuta este comando:

    gcloud scheduler jobs pause MY_JOB
    

    Reemplaza MY_JOB por el nombre del trabajo que quieres pausar.

Mientras un trabajo está en pausa, también puedes editarlo. Después de editar el trabajo, este permanecerá detenido hasta que lo reanudes.

Reanuda un trabajo

Es posible reanudar la ejecución de un trabajo en pausa.

Console

  1. En Google Cloud Console, ve a Cloud Scheduler.

    Ir a Cloud Scheduler

  2. Selecciona el trabajo que quieres reanudar.

    El trabajo ya debe estar detenido.

  3. Haz clic en Reanudar.

gcloud

  1. Abre una ventana de la terminal en la máquina en la que instalaste la CLI de gcloud.

  2. Ejecuta este comando:

    gcloud scheduler jobs resume MY_JOB
    

    Reemplaza MY_JOB por el nombre del trabajo que quieres reanudar.

Borra un trabajo

Es posible borrar un trabajo.

Console

  1. En Google Cloud Console, ve a Cloud Scheduler.

    Ir a Cloud Scheduler

  2. Selecciona el trabajo que quieres borrar.

  3. Haz clic en Borrar.

gcloud

  1. Abre una ventana de la terminal en la máquina en la que instalaste la CLI de gcloud.

  2. Ejecuta este comando:

    gcloud scheduler jobs delete MY_JOB
    

    Reemplaza MY_JOB por el nombre del trabajo que se borrará.