Puedes ejecutar flujos de trabajo de corta duración ejecutándolos como tareas. En Ejecutar tareas se describe cómo ejecutar tareas en Aplicaciones.
También puedes programar tareas para que se ejecuten a intervalos recurrentes especificados con el formato cron para UNIX. Con las tareas programadas, primero insertas una aplicación que ejecuta la tarea, como harías con una tarea no programada, y luego creas un trabajo para programar la tarea.
Puedes definir una programación para que tu tarea se ejecute varias veces al día o en días y meses concretos.
Enviar una aplicación para ejecutar tareas programadas
Clona el repositorio test-app:
git clone https://github.com/cloudfoundry-samples/test-app test-app
cd test-app
Envía la aplicación.
Envía la aplicación con el comando
kf push APP_NAME --task
. La marca--task
indica que la aplicación se va a usar para ejecutar tareas, por lo que no se crearán rutas en la aplicación y no se desplegará como una aplicación de larga duración.kf push test-app --task
Confirma que no se han creado instancias ni rutas de la aplicación mostrando la aplicación:
kf apps
Observa que la aplicación no se ha iniciado y no tiene URLs:
Listing Apps in Space: test-space Name Instances Memory Disk CPU URLs test-app stopped 1Gi 1Gi 100m <nil>
Crear un empleo
Para ejecutar una tarea de forma programada, primero debes crear un trabajo que describa la tarea:
kf create-job test-app test-job "printenv"
El trabajo se inicia suspendido o sin programar, y no crea tareas hasta que lo ejecuta manualmente kf run-job
o lo programa kf schedule-task
.
Ejecutar una tarea manualmente
Los trabajos se pueden ejecutar de forma específica, de forma similar a las tareas de kf run-task
. Esta opción puede ser útil para probar el trabajo antes de programarlo o ejecutarlo según sea necesario, además de la programación.
kf run-job test-job
Este comando ejecuta la tarea definida por el trabajo una sola vez de inmediato.
Programar tareas
Para programar la ejecución del trabajo, debes proporcionar una programación cron de Unix en el comando kf schedule-job
:
kf schedule-job test-job "* * * * *"
Este comando activa la tarea para que cree automáticamente tareas según la programación especificada. En este ejemplo, una tarea se ejecuta cada minuto.
Para actualizar la programación de una tarea, ejecuta kf schedule-task
con una nueva programación.
Los trabajos de Kf solo pueden tener una programación cron. Esto es diferente del programador de PCF, que permite programar varias tareas.
Si necesitas varias programaciones cron, puedes hacerlo con varios trabajos.
Gestionar trabajos y programaciones
Para ver todas las tareas, tanto programadas como no programadas, del espacio actual, usa el comando kf jobs
:
$ kf jobs
Listing Jobs in Space: test space
Name Schedule Suspend LastSchedule Age Ready Reason
test-job * * * * * <nil> 16s 2m True <nil>
unscheduled-job 0 0 30 2 * true 16s 2m True <nil>
Además, solo puedes ver los trabajos que se hayan programado activamente con el comando kf job-schedules
.
$ kf job-schedules
Listing job schedules in Space: test space
Name Schedule Suspend LastSchedule Age Ready Reason
test-job * * * * * <nil> 16s 2m True <nil>
Observa que unscheduled-job
no aparece en el resultado de kf job-schedules
.
Cancelar la programación de una tarea
Puedes detener una tarea programada con el comando kf delete-job-schedule
:
kf delete-job-schedule test-job
Este comando suspende el trabajo e impide que cree tareas según la programación anterior.
La tarea no se elimina y kf schedule-job
puede volver a programarla para que se siga ejecutando.
Eliminar un trabajo
Puedes eliminar todo el trabajo con el comando kf delete-job
:
kf delete-job test-job
Este comando elimina el trabajo y todas las tareas que se hayan creado con él, tanto las programadas como las manuales. Si alguna tarea sigue en ejecución, este comando las eliminará por la fuerza.
Si quieres asegurarte de que las tareas en curso no se interrumpan, primero elimina la programación de las tareas con kf delete-job-schedule
, espera a que se completen todas las tareas y, a continuación, elimina la tarea llamando a kf delete-job
.