Cómo se manejan las solicitudes

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

Si la aplicación usa servicios, puedes direccionar solicitudes a un servicio específico o a una versión específica de ese servicio. Para obtener más información sobre cómo direccionar el servicio, consulta Cómo se enrutan las solicitudes.

Cómo controlar las solicitudes

La aplicación se encarga de iniciar un servidor web y controlar las solicitudes. Puedes usar 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. Estas pueden enrutarse a cualquier instancia, por lo que las solicitudes consecutivas del mismo usuario no necesariamente se envían a la misma instancia. Una instancia puede manejar varias solicitudes al mismo tiempo. La cantidad de instancias se puede ajustar automáticamente a medida que cambia el tráfico. También puedes cambiar la cantidad de solicitudes simultáneas que puede controlar una instancia. Para esto, configura 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 asigna recursos a tu aplicación de manera automática a medida que el tráfico aumenta. Sin embargo, esto se limita con las siguientes restricciones:

  • App Engine reserva la capacidad de ajuste de escala automático para aplicaciones con latencia baja a fin de que la aplicación responda a las solicitudes en menos de un segundo. Las aplicaciones con latencia muy alta, como las de más de un segundo por solicitud para varias solicitudes, y con capacidad de procesamiento alta requieren asistencia nivel Plata, Oro o Platino. Los clientes con este nivel de asistencia pueden comunicarse con su representante de asistencia para solicitar el aumento de sus límites de capacidad de procesamiento.

  • Las aplicaciones estrechamente vinculadas a la CPU también pueden incurrir en alguna latencia adicional para compartir recursos de manera eficaz con otras aplicaciones en el mismo servidor. Las solicitudes para archivos estáticos están exentas de estos límites de capacidad de latencia.

Cada solicitud que entra a la aplicación se tiene en cuenta para los límites de Solicitudes. Los datos enviados en respuesta a una solicitud se tienen en cuenta para el límite de Ancho de banda de salida (facturable).

Tanto las solicitudes HTTP como las HTTPS (seguras) se tienen en cuenta para los límites de Solicitudes, Ancho de banda de entrada (facturable) y Ancho de banda de salida (facturable). La página de detalles de las cuotas de GCP Console también informa las solicitudes seguras, el ancho de banda de contenido nuevo seguro y el ancho de banda saliente seguro como valores individuales para fines informativos. Solo se tienen en cuenta las solicitudes HTTPS para estos valores. Para obtener más información, consulta la página de Cuotas.

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

Límite Importe
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 (archivos estáticos y de la aplicación) 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 gratuito
$0.026 por gigabyte al mes después del primer (1) gigabyte

Límites de la respuesta

Las respuestas dinámicas se limitan a 32 MB. Si un controlador de secuencia de comandos genera una respuesta superior a este límite, el servidor envía una respuesta vacía con un código de estado 500 “Error interno del servidor”. Esta limitación no se aplica a las respuestas que entregan datos desde Blobstore o Cloud Storage.

Encabezados de solicitud

Una solicitud HTTP nueva incluye los encabezados HTTP que envía el cliente. Por motivos de seguridad, los proxies intermedios limpian o modifican algunos encabezados antes de que lleguen a 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 solicitudes.

Respuestas a transmisión

App Engine no admite la transmisión de respuestas, donde los datos se envían en fragmentos graduales 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 un tiempo limitado para generar y mostrar una respuesta a una solicitud, normalmente alrededor de 60 segundos. 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 aplicación eficiente responde rápidamente a la mayoría de las solicitudes. Si una aplicación no puede hacerlo, no escalará bien con la infraestructura de App Engine.

Consulta la página sobre el manejo de errores DeadlineExceededErrors a fin de conocer las causas comunes de un 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