Crear tareas de salida

En esta página se describe cómo crear tareas y colocarlas en colas de salida. Cuando quieras procesar una tarea, debes crear un objeto de tarea y colocarlo en una cola. Puedes especificar de forma explícita el servicio y el controlador que procesan la tarea, así como enviar datos específicos de la tarea al controlador (opcional). También puedes ajustar la configuración de la tarea, como programar una hora en el futuro para que se ejecute o limitar el número de veces que quieres que se vuelva a intentar si falla.

Crear una tarea

Especificar el servicio de trabajador

Cuando se extrae una tarea de su cola, el servicio de colas de tareas la envía a un servicio de trabajador. Cada tarea tiene un destino y una URL, que determinan qué servicio y controlador realizarán la tarea en última instancia.

target

El destino especifica el servicio que recibirá la solicitud HTTP para realizar la tarea. Es una cadena que especifica un servicio, una versión o una instancia en cualquiera de los formatos canónicos. Los formularios que se usan con más frecuencia son los siguientes:

    service
    version.service
    instance.version.service

La cadena de destino se añade al principio del nombre de dominio de tu aplicación. Hay tres formas de definir el destino de una tarea:

  • Declara el destino al crear la tarea.

  • Incluye una directiva target cuando definas una cola en queue.yaml, como en la definición de queue-blue. Todas las tareas añadidas a una cola con un target usarán ese objetivo, aunque se haya asignado otro objetivo a la tarea en el momento de la creación.

  • Si no se especifica ningún destino según ninguno de los dos métodos anteriores, el destino de la tarea es la versión del servicio que la pone en cola. Ten en cuenta que, si pones en cola una tarea del servicio y la versión predeterminados de esta forma, y la versión predeterminada cambia antes de que se ejecute la tarea, se ejecutará en la nueva versión predeterminada.

url

url selecciona uno de los controladores del servicio de destino, que realizará la tarea.

El url debe coincidir con uno de los patrones de URL del controlador del servicio de destino. El url puede incluir parámetros de consulta si el método especificado en la tarea es GET o PULL. Si no se especifica ningún url, se usa la URL predeterminada /_ah/queue/[QUEUE_NAME], donde [QUEUE_NAME] es el nombre de la cola de la tarea.

Transferir datos al controlador

Puede transferir datos al controlador como parámetros de consulta en la URL de la tarea, pero solo si el método especificado en la tarea es GET o PULL.

Poner nombre a una tarea

Cuando creas una tarea, App Engine le asigna un nombre único de forma predeterminada. Sin embargo, puedes asignar tu propio nombre a una tarea usando el parámetro name. Una de las ventajas de asignar tus propios nombres a las tareas es que las tareas con nombre no se duplican, lo que significa que puedes usar nombres de tareas para garantizar que una tarea solo se añada una vez. La desduplicación continúa durante 9 días después de que se complete o se elimine la tarea.

Tenga en cuenta que la lógica de desduplicación introduce una sobrecarga de rendimiento significativa, lo que provoca un aumento de la latencia y, posiblemente, de las tasas de error asociadas a las tareas con nombre. Estos costes pueden aumentar significativamente si los nombres de las tareas son secuenciales, como ocurre con las marcas de tiempo. Por lo tanto, si asignas tus propios nombres, te recomendamos que utilices un prefijo bien distribuido para los nombres de las tareas, como un hash del contenido.

Si asignas tus propios nombres a las tareas, ten en cuenta que la longitud máxima del nombre es de 500 caracteres y que puede contener letras mayúsculas y minúsculas, números, guiones bajos y guiones.

Siguientes pasos