Cómo se manejan las solicitudes

En este documento, se describe cómo recibe solicitudes y envía respuestas tu aplicación de App Engine. Para obtener más detalles, consulta la referencia de Encabezados de solicitud y respuestas.

Si tu aplicación utiliza servicios, puedes destinar solicitudes a un servicio específico o a una versión específica de este. Para obtener más información sobre la dirección del servicio, consulta Cómo se enrutan las solicitudes.

Maneja solicitudes

Tu aplicación es responsable de iniciar un servidor web y manejar solicitudes. Puedes utilizar cualquier marco de trabajo web que esté disponible para tu lenguaje de desarrollo.

App Engine ejecuta varias instancias de tu aplicación y cada una tiene su propio servidor web para manejar solicitudes. Cualquier solicitud se puede enrutar hacia cualquier instancia, así que las solicitudes consecutivas del mismo usuario no necesariamente se envían a la misma instancia. Una instancia puede manejar varias solicitudes de manera simultánea. El número de instancias puede ajustarse de manera automática conforme el tráfico cambia. También puedes cambiar el número de solicitudes simultáneas que puede manejar una instancia si configuras el elemento max_concurrent_requests en tu archivo app.yaml.

La siguiente muestra contiene el código JavaScript para iniciar un servidor y responder todas las solicitudes GET de los clientes web a la ruta raíz ('/') con el mensaje "Hello, world" a través de un servidor que se ejecuta en el puerto 8080:

const express = require('express');

const app = express();

app.get('/', (req, res) => {
  res
    .status(200)
    .send('Hello, world!')
    .end();
});

// Start the server
const PORT = process.env.PORT || 8080;
app.listen(PORT, () => {
  console.log(`App listening on port ${PORT}`);
  console.log('Press Ctrl+C to quit.');
});

De manera importante, en las últimas líneas, el código hace que el servidor detecte el puerto que especifica la variable process.env.PORT. Esta es una variable de entorno que configura el entorno de ejecución de App Engine. Si tu servidor no detecta este puerto, no podrá recibir solicitudes.

Cuotas y límites

App Engine le asigna recursos a tu aplicación de manera automática conforme el tráfico aumenta. Sin embargo, esto se sujeta a las restricciones siguientes:

  • App Engine reserva la capacidad de ajuste de escala automático para las aplicaciones con latencia baja; es decir, la aplicación responde solicitudes en menos de un segundo. Las aplicaciones con latencia alta, es decir, que responden solicitudes en más de un segundo por solicitud, y capacidad de procesamiento alta necesitan asistencia de nivel Plata, Oro o Platino. Los clientes con este nivel de asistencia pueden solicitar límites de capacidad de procesamiento más altos si contactan a su representante de asistencia.

  • Las aplicaciones que están muy ligadas a la CPU pueden generar un poco de latencia adicional para compartir recursos con otras aplicaciones en el mismo servidor de manera eficiente. Las solicitudes de archivos estáticos están exentas de estos límites de latencia.

Cada solicitud entrante en la aplicación toma en cuenta los límites de las Solicitudes. Los datos que se envían como respuesta a una solicitud, toman en cuenta el límite de Ancho de banda saliente (facturable).

Las solicitudes HTTP y HTTP seguras toman en cuenta los límites de las Solicitudes, del Ancho de banda entrante (facturable) y del Ancho de banda saliente (facturable). La página Detalles de la cuota de GCP Console también informa sobre las Solicitudes seguras, el Ancho de banda entrante seguro y el Ancho de banda saliente seguro como valores independientes para fines informativos. Solo las solicitudes HTTPS toman en cuenta estos valores. Para obtener más información, consulta la página Cuota.

Los límites siguientes se aplican específicamente al uso de los controladores de solicitudes:

Límite Cantidad
Tamaño de la solicitud 32 megabytes
Tamaño de la respuesta 32 megabytes
Duración de la solicitud 60 segundos
Cantidad total máxima de archivos (estáticos y de la app) 10,000 en total
1,000 por directorio
Tamaño máximo de un archivo de la aplicación 32 megabytes
Tamaño máximo de un archivo estático 32 megabytes
Tamaño total máximo de todos los archivos estáticos y de la aplicación El primer 1 gigabyte es gratis
$0.026 por gigabyte al mes después del primer gigabyte

Límites de respuesta

Las respuestas dinámicas se limitan a 32 MB. Si un controlador de secuencia de comandos genera una respuesta que sobrepase este límite, el servidor devuelve una respuesta vacía con un código de estado 500 de error interno del servidor. Este límite no se aplica para las respuestas que entregan datos de Blobstore o Cloud Storage.

Encabezados de solicitud

Una solicitud HTTP entrante incluye los encabezados HTTP que envió el cliente. Para fines de seguridad, los proxys intermedios limpian o enmiendan algunos encabezados antes de que alcancen la aplicación.

Para obtener más información, consulta la referencia de Encabezados de solicitud.

Respuestas a las solicitudes

Hay límites que se aplican para la respuesta que generas, la cual puede modificarse antes de que regrese al cliente.

Para obtener más información, consulta la referencia de Respuestas a las solicitudes.

Transmite respuestas

App Engine no admite respuestas que se transmiten, en las cuales se envían datos en fragmentos incrementales al cliente mientras se procesa una solicitud. Todos los datos de tu código se recopilan como se menciona anteriormente y se envían como una sola respuesta HTTP.

Especifica un plazo de solicitud

Un controlador de solicitudes tiene una cantidad limitada de tiempo, usualmente alrededor de 60 segundos, para generar y regresar una respuesta de solicitud. Una vez que se alcanza el plazo, el controlador de solicitudes se interrumpe.

Mientras que una respuesta de solicitud puede tardar hasta 60 segundos, App Engine se optimiza para las aplicaciones con solicitudes de corta duración, que usualmente son las que tardan unos cientos de milisegundos. Una app eficiente responde rápidamente a la mayoría de las solicitudes. Una app que no lo haga, no escalará bien con la infraestructura de App Engine.

Consulta el artículo Controla los errores DeadlineExceededErrors para conocer las causas comunes de los errores DeadlineExceededError y las soluciones alternativas que se sugieren.

¿Te ha resultado útil esta página? Enviar comentarios:

Enviar comentarios sobre...

Documentación del entorno estándar de App Engine para Node.js