ID de región
REGION_ID
es un código abreviado que Google asigna en función de la región que eliges cuando creas la app. El código no corresponde a un país ni a una provincia, aunque algunos ID de región puedan parecer similares a los códigos de país y provincia que se suelen usar. En el caso de las apps creadas después de febrero de 2020, REGION_ID.r
se incluye en las URL de App Engine. En el caso de las apps existentes creadas antes de esta fecha, el ID de región es opcional en la URL.
Obtén más información acerca de los ID de región.
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.
Si tu aplicación usa servicios, puedes dirigir 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 enrutar solicitudes.
Control de 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 de forma automática a medida que cambia el tráfico.
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 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 saliente (facturable).
Las solicitudes HTTP y las HTTPS (seguras) se tienen en cuenta para los límites de Solicitudes, Ancho de banda entrante (facturable) y Ancho de banda saliente (facturable). En la página Detalles de cuota de la consola de Google Cloud también se informan las Solicitudes seguras, el Ancho de banda entrante seguro y el Ancho de banda saliente seguro como valores separados. Solo se tienen en cuenta las solicitudes HTTPS para estos valores. Para obtener más información, consulta la página de Cuotas.
Los límites que se indican a continuación se aplican al uso de los controladores de solicitudes en particular.
Límites de solicitudes
- Se permite un máximo de ~15 KB en encabezados de solicitud.
- El tamaño total de la solicitud se limita a ~32 MB.
- Todas las solicitudes HTTP/2 se convertirán en solicitudes HTTP/1.1 cuando se reenvíen al servidor de la aplicación.
- Las conexiones SSL finalizan en el balanceador de cargas. El tráfico del balanceador de cargas se envía a la instancia por un canal encriptado y, luego, se reenvía al servidor de la aplicación mediante HTTP. El encabezado X-Forwarded-Proto te permite saber si la solicitud de origen fue HTTP o HTTPS.
Límites de la respuesta
- Las respuestas se almacenan en búfer en bloques de 64,000.
- El tamaño de la respuesta es ilimitado.
- El límite de tiempo de la respuesta es de una hora.
- El límite del encabezado de respuesta es de 64 KB. Los encabezados de respuesta que excedan este límite mostrarán errores HTTP 502, con registros que muestran
upstream sent too big header while reading response header from upstream
.
Solicitudes HTTP no compatibles
Las siguientes funciones no son compatibles con el entorno flexible de App Engine.
- Tráfico HTTP/2 para el servicio de backend
- Solicitudes HTTP que acceden a instancias de manera directa
Encabezados de la 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 encabezados de solicitud.
Inhabilita el almacenamiento en búfer
Según la configuración predeterminada, todas las respuestas de App Engine se almacenan en búfer en bloques de 64,000. En algunos casos, puede ser apropiado inhabilitar el almacenamiento en búfer y transmitir bytes de manera directa al cliente. Esto es lo que se recomienda si se usan GET pendientes o eventos enviados por el servidor (SSE). Para inhabilitar el almacenamiento en búfer, puedes configurar el encabezado de respuesta X-Accel-Buffering
como no
.
Fuerza conexiones HTTPS
Por motivos de seguridad, todas las aplicaciones deben incentivar al cliente a conectarse mediante https
. A fin de indicarle al navegador que elija https
en lugar de http
para una página determinada o un dominio completo, configura el encabezado Strict-Transport-Security
en tus respuestas.
Por ejemplo:
Strict-Transport-Security: max-age=31536000; includeSubDomains
Administra el trabajo asíncrono en segundo plano
El trabajo en segundo plano es cualquier trabajo que tu app realice para una solicitud después de que entregaste la respuesta HTTP. Evita realizar tareas en segundo plano en la app y revisa el código para asegurarte de que todas las operaciones asíncronas finalicen antes de entregar la respuesta.
Para trabajos de larga duración, recomendamos usar Cloud Tasks. Con Cloud Tasks, las solicitudes HTTP son de larga duración y muestran una respuesta solo después de que finaliza cualquier trabajo asíncrono.