Agregar una tarea a una cola de Cloud Tasks
Las siguientes instrucciones te permiten probar las operaciones básicas mediante colas de Cloud Tasks a través de la API de Cloud Tasks :
Antes de comenzar
A fin de configurar tu entorno de Cloud para esta guía de inicio rápido, crea un proyecto de Google Cloud y agrega una aplicación de App Engine con la facturación habilitada. Si ya tienes una cuenta de facturación cuando creas el proyecto de Google Cloud, la facturación se habilita de forma automática.Para obtener más información sobre los proyectos de Google Cloud, las aplicaciones de App Engine y la facturación en general, consulta esta página. Para obtener más información sobre cómo usar objetivos HTTP, consulta Crea tareas de destino HTTP.
- Crea o selecciona un proyecto de Google Cloud:
Ir a la página de App Engine - Usa los botones de la esquina superior derecha para seleccionar un nombre de proyecto existente o crear uno nuevo.
- Anote el ID del proyecto en el cuadro desplegable que se encuentra en la esquina superior izquierda. Sirve como parámetro para tus solicitudes de Cloud Tasks.
- Agrega una aplicación de App Engine a tu proyecto:
- En la página Bienvenido a App Engine, haga clic en Crear aplicación.
- Selecciona una región para tu aplicación.
Esta ubicación servirá como parámetro LOCATION_ID para tus solicitudes de Cloud Tasks, así que anótala. Ten en cuenta que hay dos ubicaciones, llamadas
europe-west
yus-central
en los comandos de App Engine, que se llaman respectivamente,europe-west1
yus-central1
, en los comandos de Cloud Tasks. - En la página Comenzar, solo haz clic en Siguiente. Te ocuparás de esto más adelante. Si este es un proyecto nuevo, se compila el entorno de ejecución.
- Si aparece la ventana emergente Habilitar facturación, selecciona tu cuenta de facturación. Si no tienes una cuenta de facturación, haz clic en Crear cuenta de facturación y sigue los pasos del asistente.
- En la página Próximos pasos, haz clic en I'll do this later. Accederás a las muestras y descargarás el SDK más adelante.
- Habilita la API de Cloud Tasks.
Ir a la página API de Cloud Tasks - Configura la autenticación en la API.
- Sigue las instrucciones para crear una cuenta de servicio. Descarga el archivo con la clave JSON asociada a la cuenta y almacénala de manera local. La clave de la cuenta de servicio autoriza a tu código local para acceder a Google Cloud de manera programática.
- En las muestras, se usan las bibliotecas cliente de Google Cloud para interactuar con App Engine, por lo que debes configurar una variable de entorno que apunte a la clave que descargaste antes, a fin de que la biblioteca la autentique y autorice tus solicitudes. Es posible crear tus solicitudes sin usar las bibliotecas cliente, pero te ayudan a administrar los detalles de una comunicación de bajo nivel con el servidor, incluida la autenticación.
- Instala y configura la CLI de
gcloud
. Esto te brinda acceso a la herramientagcloud
.
Configura la muestra
En estas muestras, se proporciona un framework para intentar agregar tareas a las colas de Cloud Tasks mediante la API de Cloud Tasks .
C#
La muestra de C# consta de dos apps, una (CreateAppEngineTask
) que se ejecuta de manera local como una herramienta de línea de comandos para crear tareas y agregarla a la cola, y otra (CloudTasks
) implementada en App Engine Flex como un trabajador para "procesar" la tarea.
Para descargar e instalar la muestra, sigue estos pasos:
Asegúrate de tener instalado el SDK de.NET Core versión 2.0 o una versión más reciente.
Asegúrate de haber inicializado la herramienta de
gcloud
y de haberla configurado para usar el proyecto de Google Cloud que creaste antes.Clona el repositorio de la aplicación de muestra en tu máquina local:
git clone https://github.com/GoogleCloudPlatform/dotnet-docs-samples
Navega al directorio que contiene el código de muestra de
CreateTask
:cd dotnet-docs-samples/cloudtasks/api/TasksSample/
Instala todas las dependencias:
dotnet restore
Navega al directorio (
dotnet-docs-samples/cloudtasks/appengine/
) que contiene el código de muestra deCloudTasks
y, luego, instala todas las dependencias:dotnet restore
Compila la aplicación y prepárala para la implementación:
dotnet publish
Implementa el servicio de trabajador (
CloudTasks
) en App Engine Flex:gcloud app deploy .\bin\Debug\netcoreapp2.1\publish\app.yaml
Verifica que la página de índice esté en uso:
gcloud app browse
Tu navegador abre
https://{YOUR_PROJECT_ID}.appspot.com/
y muestraHello, World!
.
Python
La app de muestra de Python consta de dos archivos, uno (create_app_engine_queue_tasks.py
) que se ejecuta de manera local como una herramienta de línea de comandos y agrega tareas a la cola, y otro (main.py
) implementado en App Engine como un trabajador para la tarea.
Para descargar e instalar la muestra, sigue estos pasos:
Clona el repositorio de la aplicación de muestra en tu máquina local:
git clone https://github.com/GoogleCloudPlatform/python-docs-samples.git
Navega al directorio que contiene el código de muestra:
cd python-docs-samples/appengine/flexible/tasks/
Instala todas las dependencias:
pip install -r requirements.txt
Asegúrate de haber inicializado la herramienta
gcloud
y de haberla configurado para usar el proyecto que creaste antes.Implementa el servicio del trabajador (
main.py
) en App Engine:gcloud app deploy
Verifica que la página de índice esté en uso:
gcloud app browse
Tu navegador abre
https://{YOUR_PROJECT_ID}.appspot.com/
y muestraHello, World!
.
Java
La app de muestra de Java 8 consta de dos archivos, uno (CreateTask.java
) se ejecuta de forma local como una herramienta de línea de comandos para crear tareas y agrega tareas a la cola, y otro (TaskServlet.java
) implementado en App Engine como un trabajador para procesar la tarea. Para ejecutar la muestra con Java 11, consulta Ejecuta código de manera asíncrona de Java 11.
Nota: Para usar la app de muestra de Java, también debes tener estos componentes adicionales:
- Maven
- El componente app-engine-java de la CLI de
gcloud
- El complemento de Maven de App Engine, que ya se especificó en el archivo
pom.xml
proporcionado para la muestra
Si quieres obtener más información sobre estos componentes, consulta Usa Apache Maven y el complemento de App Engine y Objetivos y parámetros del complemento de Maven.
Para descargar e instalar la muestra, sigue estos pasos:
Clona el repositorio de la aplicación de muestra en tu máquina local:
git clone https://github.com/GoogleCloudPlatform/java-docs-samples.git
Navega al directorio de nivel superior de la muestra de Tasks:
cd java-docs-samples/appengine-java8/tasks/quickstart/
Asegúrate de haber inicializado la herramienta
gcloud
y de haberla configurado para usar el proyecto que creaste antes.Compila y ejecuta la herramienta de línea de comandos local (
CreateTask.java
):mvn appengine:run
Implementa el servicio del trabajador (
TaskServlet.java
) en App Engine:mvn appengine:deploy
PHP
La muestra de PHP consta de dos archivos, uno (/snippets/src/create_task.php
) que se ejecuta de manera local como una herramienta de línea de comandos y crea tareas en la cola, y otro (/apps/handler/index.php
) implementado en App Engine como un trabajador para la tarea.
Para descargar e instalar la muestra, sigue estos pasos:
Clona el repositorio de la aplicación de muestra en tu máquina local:
git clone https://github.com/GoogleCloudPlatform/php-docs-samples
Navega al directorio de nivel superior de la muestra de Tasks:
cd php-docs-samples/appengine/standard/tasks
En el directorio
tasks
, verás dos subdirectorios:apps/handler
: Contiene el código para que el servicio de trabajador se implemente en App Engine.snippets
: Contiene el código de la herramienta de línea de comandos local.
Asegúrate de tener instalado Composer. Si deseas usarlo de forma local, asegúrate de que
composer.phar
esté ubicado en ambos subdirectorios. Consulta la documentación de Composer para obtener información sobre la ejecución local y la ejecución global.En el directorio
snippets
, instala todas las dependencias:composer install
o solo para locales:php composer.phar install
En el directorio
apps/handler
, instala todas las dependencias:composer install
o solo para locales:php composer.phar install
Asegúrate de haber inicializado la herramienta de
gcloud
y de haberla configurado para usar el proyecto de Google Cloud que creaste antes.Desde el directorio
apps/handler
, implementa el servicio de trabajador en App Engine mediante el comandogcloud app deploy
:gcloud app deploy
Verifica que la app que contiene el servicio esté en ejecución:
gcloud app browse
Tu navegador abre
https://{YOUR_PROJECT_ID}.appspot.com/
y muestraHello, World!
.
Go
La muestra de Golang consta de dos archivos, uno (tasks/create_task/create_task.go
) que se ejecuta de manera local como herramienta de línea de comandos y agrega tareas a la cola, y otro (tasks/handle_task/handle_task.go
) implementado en App Engine como un trabajador para la tarea.
Para descargar e instalar la muestra, sigue estos pasos:
Asegúrate de que instalaste el componente
gcloud
de App Engine para Go:gcloud components install app-engine-go
Asegúrate de haber inicializado la herramienta
gcloud
y de haberla configurado para usar el proyecto que creaste antes.Copia el repositorio de la aplicación de muestra en tu máquina local:
go get github.com/GoogleCloudPlatform/golang-samples/appengine/go11x/tasks/...
Navega al directorio
tasks/handle_task
del código de muestra del trabajador.cd golang-samples/appengine/go11x/tasks/handle_task
Observe el archivo
app.yaml
, que contiene la información de configuración necesaria.Implementa el servicio del trabajador (
handle_task.go
) en App Engine:gcloud app deploy
Verifica que la app que contiene el servicio esté en ejecución:
gcloud app browse
Tu navegador abre
https://{YOUR_PROJECT_ID}.appspot.com/
y muestraHello, World!
.
Node.js
La muestra de Node.js consta de dos archivos, uno (createTask.js
) que se ejecuta de manera local como una herramienta de línea de comandos y agrega tareas a la cola, y otro (server.js
) implementado en App Engine como un trabajador para "procesar" la tarea.
Para descargar e instalar la muestra, sigue estos pasos:
Clona el repositorio de la aplicación de muestra en tu máquina local:
git clone https://github.com/googleapis/nodejs-tasks.git
Navega al directorio que contiene el código de muestra:
cd nodejs-tasks/samples
Instala todas las dependencias.
Puedes usar npm:
npm install
O puedes usar yarn:yarn install
Asegúrate de haber inicializado la herramienta
gcloud
y de haberla configurado para usar el proyecto que creaste antes.Implementa el servicio del trabajador (
server.js
) en el entorno estándar de App Engine:gcloud app deploy app.yaml
Verifica que la app que contiene el servicio esté en ejecución:
gcloud app browse
Tu navegador abre
https://{YOUR_PROJECT_ID}.appspot.com/
y muestraHello, World!
.
Ruby
La muestra de Ruby consiste en dos archivos, uno (create_Task.rb
) que se ejecuta de forma local como una herramienta de línea de comandos y crea tareas en la cola, y otro (app.rb
) implementado en App Engine como un trabajador para la tarea.
Para descargar e instalar la muestra, sigue estos pasos:
Clona el repositorio de la aplicación de muestra en tu máquina local:
git clone https://github.com/GoogleCloudPlatform/ruby-docs-samples.git
Navega al directorio que contiene el código de muestra:
cd ruby-docs-samples/appengine/cloud-tasks
Instala las dependencias:
bundle install
Asegúrate de haber inicializado la herramienta
gcloud
y de haberla configurado para usar el proyecto que creaste antes.Implementa el servicio de trabajador (
app.rb
) en el entorno flexible de App Engine:gcloud app deploy app.yaml
Verifica que la app que contiene el servicio esté en ejecución:
gcloud app browse
Tu navegador abre
https://{YOUR_PROJECT_ID}.appspot.com/
y muestraHello, World!
.
Para obtener más información sobre la creación de controladores de tareas de App Engine, consulta Crea controladores de tareas de App Engine.
Crea una cola de Cloud Tasks
Usa la función de administración de colas gcloud
de la CLI de gcloud
para crear tu cola en el entorno que preparaste antes.
En la línea de comandos, ingresa lo siguiente:
gcloud tasks queues create my-queue
Espera un poco a que se inicialice la cola y, luego, usa
describe
para verificar que se haya creado de forma correcta:gcloud tasks queues describe my-queue
Verifica que el resultado sea similar a este:
name: projects/[PROJECT_ID]/locations/[LOCATION_ID]/queues/my-appengine-queue # Note these ids rateLimits: maxBurstSize: 100 maxConcurrentDispatches: 1000 maxDispatchesPerSecond: 500.0 retryConfig: maxAttempts: 100 maxBackoff: 3600s maxDoublings: 16 minBackoff: 0.100s state: RUNNING
Agregar una tarea a la cola de Cloud Tasks
C#
Crea una tarea localmente, agrégala a la cola que configuraste y entrégala a un trabajador asíncrono:
Configura las siguientes variables de entorno en tu máquina, ya sea de forma manual, en el código de tu app de muestra o mediante un alias. La app de muestra usa estas variables para crear la solicitud que agrega tareas a tu cola:
export GOOGLE_PROJECT_ID=my-project-id # The project ID you set up above export GCP_QUEUE=my-queue # the queue you created above export LOCATION_ID=my-location-id # The region in which your queue is running
Puedes encontrar el ID de ubicación para la app de App Engine mediante el siguiente comando de
gcloud
:gcloud tasks locations list
Navega a la carpeta
TasksSample
:cd ../api/TasksSample
Con
test
, crea una tarea y agrega una carga útil, la string 'hello'. LaCloudTasks
app que implementaste antes tiene un extremolog_payload
que procesa la carga útil mediante el registro.dotnet test
Verifica el registro para asegurarte de que la tarea haya alcanzado el extremo:
gcloud app logs read
Python
Crea una tarea localmente, agrégala a la cola que configuraste y entrégala a un trabajador asíncrono:
Configura las siguientes variables de entorno en tu máquina de forma manual, en el código de tu app de muestra o mediante un alias. La app de muestra usa estas variables para crear la solicitud que agrega tareas a tu cola:
export PROJECT_ID=PROJECT_ID # The project ID you set up above export LOCATION_ID=LOCATION_ID # The region in which your queue is running export QUEUE_ID=my-queue # The queue you created above
Nota: Puedes encontrar el ID de ubicación mediante el siguiente comando degcloud
:gcloud tasks locations list
Usa el
create_app_engine_queue_task.py
local para crear una tarea y agrega una carga útil dehello
. La carga útil puede ser cualquier dato de la solicitud que el trabajador necesite para completar el procesamiento de la tarea:python create_app_engine_queue_task.py --project=$PROJECT_ID --location=$LOCATION_ID --queue=$QUEUE_ID --payload=hello
Verifica que se haya recibido la carga útil:
gcloud app logs read
Java
Crea una tarea localmente, agrégala a la cola que configuraste y entrégala a un trabajador asíncrono:
Configura las siguientes variables de entorno en tu máquina de forma manual, en el código de tu app de muestra o mediante un alias. La app de muestra las usa para crear la solicitud que agrega la tarea a tu cola:
export GOOGLE_CLOUD_PROJECT=PROJECT_ID # The project ID you set up above export LOCATION_ID=LOCATION_ID # The region in which your queue is running export QUEUE_ID=my-queue # The queue you created above
Nota: Puedes encontrar el ID de ubicación mediante el siguiente comando degcloud
:gcloud tasks locations list
Crea una tarea dirigida al extremo
/task/create
en el servlet que implementaste, con una carga útil dehello
. La carga útil puede ser cualquier dato de la solicitud que el trabajador necesite para completar el procesamiento de la tarea:mvn exec:java -Dexec.mainClass="com.example.task.CreateTask" -Dexec.args="--project-id $GOOGLE_CLOUD_PROJECT --queue $QUEUE_ID --location $LOCATION_ID --payload hello"
Revisa los registros para verificar que se haya recibido la carga útil:
gcloud app logs read
PHP
Crea una tarea localmente, agrégala a la cola que configuraste y entrégala a un trabajador asíncrono:
Navega al directorio
snippets
.Configura las siguientes variables de entorno en tu máquina de forma manual, en el código de tu app de muestra o mediante un alias. La app de muestra las usa para crear la solicitud que agrega la tarea a tu cola:
export PROJECT_ID=PROJECT_ID # The project ID from above export LOCATION_ID=LOCATION_ID # The region in which your queue is running export QUEUE_ID=my-queue # The queue you created above
Nota: Puedes encontrar el ID de ubicación mediante el siguiente comando degcloud
:gcloud tasks locations list
Usa el fragmento local
create_task.php
a fin de crear una tarea y agregar una carga útil dehello
. La carga útil puede ser cualquier dato de la solicitud que el trabajador necesite para completar el procesamiento de la tarea:php src/create_task.php $PROJECT_ID $LOCATION_ID $QUEUE_ID hello
Revisa los registros para verificar que se haya recibido la carga útil:
gcloud app logs read
Go
Crea una tarea localmente, agrégala a la cola que configuraste y entrégala a un trabajador asíncrono:
Si aún estás en el directorio
tasks/handle_task
, navega al directoriotasks/create_task
.Configura las siguientes variables de entorno en tu máquina de forma manual, en el código de tu app de muestra o mediante un alias. El cliente usa esta información para crear la solicitud:
export PROJECT_ID=PROJECT_ID # The project ID from above export LOCATION_ID=LOCATION_ID # The region in which your queue is running export QUEUE_ID=my-queue # The queue you created above
Nota: Puedes encontrar el ID de ubicación mediante el siguiente comando degcloud
:gcloud tasks locations list
Crea una tarea con una carga útil de
hello
y agrégala a tu cola. La carga útil puede ser cualquier dato de la solicitud que el trabajador necesite para completar el procesamiento de la tarea:go run . $PROJECT_ID $LOCATION_ID $QUEUE_ID hello
Para verificar que se haya recibido la carga útil, muestra los registros del servicio de trabajador:
gcloud app logs read
Node.js
Crea una tarea localmente, agrégala a la cola que configuraste y entrégala a un trabajador asíncrono:
Configura las siguientes variables de entorno en tu máquina de forma manual, en el código de tu app de muestra o mediante un alias. El cliente usa esta información para crear la solicitud:
export PROJECT_ID=PROJECT_ID # The project ID from above export LOCATION_ID=LOCATION_ID # The region in which your queue is running export QUEUE_ID=my-queue # The queue you created above
Nota: Puedes encontrar el ID de ubicación mediante el siguiente comando degcloud
:gcloud tasks locations list
Crea una tarea con una carga útil de
hello
y agrégala a tu cola. La carga útil puede ser cualquier dato de la solicitud que el trabajador necesite para completar el procesamiento de la tarea:node createTask.js $PROJECT_ID $QUEUE_ID $LOCATION_ID hello
Para verificar que se haya recibido la carga útil, muestra los registros del servicio de trabajador:
gcloud app logs read
Ruby
Crea una tarea localmente, agrégala a la cola que configuraste y entrégala a un trabajador asíncrono:
Configura las siguientes variables de entorno en tu máquina de forma manual, en el código de tu app de muestra o mediante un alias. El cliente usa esta información para crear la solicitud:
export GOOGLE_CLOUD_PROJECT=my-project-id # The project ID from above export LOCATION_ID=my-location-id # The region in which your queue is running export QUEUE_ID=my-queue # The queue you created above
Nota: Puedes encontrar el ID de ubicación mediante el siguiente comando degcloud
:gcloud tasks locations list
Crea una tarea con una carga útil de
hello
y agrégala a tu cola. La carga útil puede ser cualquier dato de la solicitud que el trabajador necesite para completar el procesamiento de la tarea:ruby create_task.rb $GOOGLE_CLOUD_PROJECT_ID $LOCATION_ID $QUEUE_ID hello
Para verificar que se haya recibido la carga útil, muestra los registros del servicio de trabajador:
gcloud app logs read
Limpia
Sigue estos pasos para evitar que se apliquen cargos a tu cuenta de Google Cloud por los recursos que usaste en esta página.
- En la consola, ve a la página Administrar recursos.
- En la lista de proyectos, elige el proyecto que quieres borrar y haz clic en Borrar.
- En el diálogo, escribe el ID del proyecto y, luego, haz clic en Cerrar para borrar el proyecto.
Próximos pasos
- Crea y configura colas de Cloud Tasks con la guía Crea colas de Cloud Tasks.
- Obtén más información sobre Cloud Tasks en general en la Descripción general de Cloud Tasks.
- Obtén más información sobre la administración de colas con RPC en la referencia de la API de RPC.
- Obtén más información sobre la administración de colas mediante REST en la referencia de la API de REST.