Google Code disponible en: English - Español - 日本語 - 한국어 - Português - Pусский - 中文(简体) - 中文(繁體)
Una aplicación de App Engine puede consumir recursos hasta unos máximos determinados, también denominados cuotas. Gracias a las cuotas, App Engine garantiza que tu aplicación no supere tu presupuesto y que, otras aplicaciones que se ejecuten en App Engine no afecten al rendimiento de tu aplicación.
Cada recurso de App Engine se mide con respecto a uno de los dos tipos de cuotas: una cuota facturable o una cuota fija.
Las cuotas facturables son límites máximos de recursos que tú, como administrador de la aplicación, estableces para evitar que el coste de la aplicación supere tu presupuesto. Cada aplicación obtiene una cantidad gratuita de cada cuota facturable. Puedes aumentar las cuotas facturables de tu aplicación a través de la habilitación de la facturación, la configuración de un presupuesto diario y a continuación, de la asignación del presupuesto a las cuotas. Sólo se te cargarán los recursos que tu aplicación utilice actualmente, y sólo la cantidad de recursos que utilices por encima del umbral de la cuota gratuita.
Una vez que habilites la facturación para tu aplicación, puedes establecer tu presupuesto diario y ajustar las asignaciones de cuota para tu aplicación a través de la consola de administración. Para obtener más información sobre la configuración de tu presupuesto y la asignación de cuotas, consulta la sección Facturación.
Las cuotas fijas son límites máximos de recursos que establece App Engine para garantizar la integridad del sistema. Estos recursos describen los límites de la arquitectura, y se estima que todas las aplicaciones se ejecuten dentro de los mismos límites. Garantizan que otra aplicación que esté consumiendo demasiados recursos no afecte al rendimiento de tu aplicación.
Al habilitar la facturación de tu aplicación, las cuotas fijas de la aplicación aumentarán. Para obtener información más detallada, consulta la sección Recursos.
App Engine registra el uso que hace una aplicación de cada recurso durante un día de calendario y considera el recurso agotado cuando la cantidad alcanza la cuota de la aplicación para dicho recurso. Un día de calendario es un período de 24 horas que empieza a media noche, hora del Pacífico. App Engine restablece todas las medidas de recurso al empezar cada día, excepto en el caso de los datos almacenados que siempre representan la cantidad de almacenamiento del almacén de datos en uso.
Nota del historial: el ciclo de renovación de 24 horas se introdujo en diciembre de 2008. Sustituyó a un sistema más complicado de renovación "continua", para facilitar el informe y el control del uso de recursos.
Además de las cuotas diarias descritas anteriormente, App Engine modera la rapidez con la que una aplicación consume un recurso, a través de las cuotas por minuto. Esto impide que la aplicación consuma todo el contenido de su cuota en un breve período de tiempo y evita que otras aplicaciones afecten a tu aplicación monopolizando un determinado recurso.
Si tu aplicación consume un recurso demasiado rápido y se reduce a uno de los límites por minuto, la palabra "Limited" aparecerá en la cuota adecuada de la pantalla de detalles de cuota de la consola de administración. Las solicitudes de recursos que ya han alcanzado su máximo por minuto se deniegan. Para obtener información detallada, consulta la sección Reducción de un recurso.
Al igual que en el caso de las cuotas fijas diarias, existen dos niveles de cuotas por minuto, dependiendo de si se ha habilitado o no la facturación. Consulta las tablas de cuotas en la sección Recursos para obtener información detallada.
Cuando una aplicación consume todo el contenido de un recurso asignado, el recurso se vuelve no disponible hasta que se renueva la cuota. Esto puede querer decir que tu aplicación no va a funcionar hasta que se renueve la cuota.
En el caso de los recursos requeridos a la hora de iniciar una solicitud, cuando el recurso se ha agotado, App Engine devuelve un código de estado prohibido HTTP 403 para la solicitud en lugar de ejecutar un controlador de solicitud. Los recursos que se muestran a continuación tienen dicho comportamiento:
Para los demás recursos, si el recurso se ha agotado y la aplicación intenta consumir el recurso, se generará una excepción. La aplicación puede filtrar dicha excepción y controlarla, como si se mostrara un mensaje de error descriptivo para el usuario. En el API de Python, esta excepción es apiproxy_errors.OverQuotaError.
El ejemplo siguiente ilustra cómo se puede filtrar OverQuotaError, que se puede generar a través del método SendMessage() si se ha superado una cuota relacionada con el correo electrónico:
try:
mail.SendMessage(to='test@example.com',
from='admin@example.com',
subject='Test Email',
body='Testing')
except apiproxy_errors.OverQuotaError, message:
# Log the error.
logging.error(message)
# Display an informative message to the user.
self.response.out.write('The email could not be sent. '
'Please try again later.')
Si superas inesperadamente la cuota de consumo de recursos del sistema, puedes ajustar el rendimiento de tu aplicación.
Una aplicación puede utilizar los siguientes recursos, sujetos a cuotas. Los recursos evaluados en cuanto a cuotas facturables se indican con el término "(billable)". Las cantidades del recurso representan una asignación de un período de 24 horas.
El coste de recursos facturables adicionales aparece en la página de facturación.
La cantidad de datos que envía la aplicación en respuesta a las solicitudes.
Esto incluye los datos enviados en respuesta a las solicitudes seguras y a las no seguras, a los datos enviados en mensajes de correo electrónico y a los datos de solicitudes HTTP de salida que envía el servicio de extracción de URL.
La cantidad de datos que recibe la aplicación de las solicitudes.
Esto incluye los datos que recibe la aplicación de las solicitudes seguras y de las no seguras y de los datos recibidos en respuesta a solicitudes HTTP del servicio de extracción de URL.
Es el tiempo de procesamiento total empleado en la administración de solicitudes, que incluye el tiempo de ejecución de la aplicación y el de la realización de operaciones del almacén de datos. Esto no incluye el tiempo de espera de otros servicios como, por ejemplo, la espera a que se devuelva una extracción de URL o a que el servicio de imágenes transforme una imagen.
El tiempo de CPU se notifica en "segundos" y es equivalente al número de ciclos de CPU que un procesador Intel x86 de 1,2 GHz puede ejecutar en dicha cantidad de tiempo. El número actual de ciclos de CPU empleados varía mucho en función de las condiciones internas de App Engine, de modo que este número se ajusta por motivos de notificación a través de dicho procesador como medida de referencia.
Una herramienta que ayuda a identificar las áreas de la aplicación que emplean grandes cantidades de cuota de tiempo de ejecución de CPU es el módulo cProfile. Para obtener información sobre la configuración de ajuste mientras depuras tu aplicación, consulta "¿Cómo puedo ajustar el rendimiento de mi aplicación?".
Puedes consultar el tiempo de CPU que se emplea para suministrar cada solicitud en la sección de registros de la consola de administración. Mientras que el ajuste ayuda a identificar las partes ineficaces del código Python, también resulta útil comprender qué operaciones del almacén de datos contribuyen en tu uso de CPU.
| Recurso | Cuota gratuita predeterminada | Cuota de facturación habilitada | ||
|---|---|---|---|---|
| Límite diario | Tarifa máxima | Límite diario | Tarifa máxima | |
| Solicitudes | 1.300.000 solicitudes | 7.400 solicitudes/minuto | 43.000.000 de solicitudes | 30.000 solicitudes/minuto |
| Ancho de banda de salida (facturable, incluye HTTPS) | 10 gigabytes | 56 megabytes/minuto | 10 gigabytes gratuitos; 1.046 gigabytes máximo | 740 megabytes/minuto |
| Ancho de banda de entrada (facturable, incluye HTTPS) | 10 gigabytes | 56 megabytes/minuto | 10 gigabytes gratuitos; 1.046 gigabytes máximo | 740 megabytes/minuto |
| Tiempo de CPU (facturable) | 46 horas de CPU | 15 minutos de CPU/minuto | 46 horas de CPU gratuitas; 1.729 horas de CPU máximo | 72 minutos de CPU/minuto |
La cantidad de datos almacenados en entidades y los índices correspondientes.
Es importante tener en cuenta que los datos almacenados en el almacén de datos pueden conllevar importantes reducciones de gastos generales. Esta reducción de gastos generales depende del número y del tipo de propiedades asociadas e incluye el espacio que utilizan los índices integrados y personalizados. Cada entidad almacenada en el almacén de datos requiere los siguientes metadatos:
| Recurso | Cuota gratuita predeterminada | Cuota de facturación habilitada | ||
|---|---|---|---|---|
| Límite diario | Tarifa máxima | Límite diario | Tarifa máxima | |
| Llamadas al API del almacén de datos | 10.000.000 de llamadas | 57.000 llamadas/minuto | 140.000.000 de llamadas | 129.000 llamadas/minuto |
| Datos almacenados (facturables) | 1 gigabyte | Ninguno | 1 gigabyte gratuito; no hay máximo | Ninguno |
| Datos enviados al API | 12 gigabytes | 68 megabytes/minuto | 72 gigabytes | 153 megabytes/minuto |
| Datos recibidos del API | 115 gigabytes | 659 megabytes/minuto | 695 gigabytes | 1.484 megabytes/minuto |
| Tiempo de CPU del almacén de datos | 60 horas de CPU | 20 minutos de CPU/minuto | 1.200 horas de CPU | 50 minutos de CPU/minuto |
| Recurso | Cuota gratuita predeterminada | Cuota de facturación habilitada | ||
|---|---|---|---|---|
| Límite diario | Tarifa máxima | Límite diario | Tarifa máxima | |
| Llamadas al API de correo | 7.000 llamadas | 32 llamadas/minuto | 1.700.000 llamadas | 4.900 llamadas/minuto |
| Destinatarios de mensajes de correo electrónico (facturables) | 2.000 destinatarios | 8 destinatarios/minuto | 2.000 destinatarios gratuitos; 7.400.000 destinatarios máximo | 5.100 destinatarios/minuto |
| Administradores destinatarios de mensajes de correo electrónico | 5.000 correos | 24 correos/minuto | 3.000.000 de correos | 9.700 correos/minuto |
| Datos del cuerpo del mensaje enviados | 60 megabytes | 340 kilobytes/minuto | 29 gigabytes | 84 megabytes/minuto |
| Archivos adjuntos enviados | 2.000 archivos adjuntos | 8 archivos adjuntos/minuto | 2.900.000 archivos adjuntos | 8.100 archivos adjuntos/minuto |
| Datos de archivo adjunto enviados | 100 megabytes | 560 kilobytes/minuto | 100 gigabytes | 300 megabytes/minuto |
| Recurso | Cuota gratuita predeterminada | Cuota de facturación habilitada | ||
|---|---|---|---|---|
| Límite diario | Tarifa máxima | Límite diario | Tarifa máxima | |
| Llamadas al API UrlFetch | 657.000 llamadas | 3.000 llamadas/minuto | 46.000.000 de llamadas | 32.000 llamadas/minuto |
| Datos UrlFetch enviados | 4 gigabytes | 22 megabytes/minuto | 1.046 gigabytes | 740 megabytes/minuto |
| Datos UrlFetch recibidos | 4 gigabytes | 22 megabytes/minuto | 1.046 gigabytes | 740 megabytes/minuto |
| Recurso | Cuota gratuita predeterminada | Cuota de facturación habilitada | ||
|---|---|---|---|---|
| Límite diario | Tarifa máxima | Límite diario | Tarifa máxima | |
| Llamadas al API de manipulación de imágenes | 864.000 llamadas | 4.800 llamadas/minuto | 45.000.000 de llamadas | 31.000 llamadas/minuto |
| Datos enviados al API | 1 gigabyte | 5 megabytes/minuto | 560 gigabytes | 400 megabytes/minuto |
| Datos recibidos del API | 5 gigabytes | 28 megabytes/minuto | 427 gigabytes | 300 megabytes/minuto |
| Transformaciones ejecutadas | 2.500.000 transformaciones | 14.000 transformaciones/minuto | 47.000.000 de transformaciones | 32.000 transformaciones/minuto |
| Recurso | Cuota gratuita predeterminada | Cuota de facturación habilitada | ||
|---|---|---|---|---|
| Límite diario | Tarifa máxima | Límite diario | Tarifa máxima | |
| Llamadas al API de Memcache | 8.600.000 | 48.000 llamadas/minuto | 96.000.000 | 108.000 llamadas/minuto |
| Datos enviados al API | 10 gigabytes | 56 megabytes/minuto | 60 gigabytes | 128 megabytes/minuto |
| Datos recibidos del API | 50 gigabytes | 284 megabytes/minuto | 315 gigabytes | 640 megabytes/minuto |