He estado escribiendo a Google Chrome extension for Stack Exchange. Es una extensión simple que le permite realizar un seguimiento de su reputación y recibir notificaciones de los comentarios en los sitios de Stack Exchange.Stack Exchange API solicitud aplicación acelerador en Google App Engine Cloud infraestructura
Actualmente me he encontrado con algunos problemas que no puedo resolver. Mi extensión usa Google App Engine como su back-end para realizar solicitudes externas a Stack API de Exchange. Cada solicitud individual de cliente de la extensión para nuevos comentarios en un solo sitio puede causar una gran cantidad de solicitudes al punto final de la API para preparar la respuesta, incluso para usuarios que no son expertos. El usuario promedio tiene cuentas al menos en 3 sitios de la red Stack Exchange, ¡algunas tienen> 10!
Stack Exchange API tiene límites de solicitud:
Una sola dirección IP solo puede realizar una determinada cantidad de solicitudes de API por día (10.000).
La API cortará mis solicitudes si realizo más de 30 solicitudes durante 5 segundos desde una sola dirección IP.
Está claro que todas las solicitudes deben ser aceleradas a 30 por 5 segundos y actualmente he implementado la lógica de aceleración de solicitud basada en un bloqueo distribuido con memcached. Estoy utilizando memcached como un simple administrador de bloqueos para coordinar la actividad de instancias de GAE y acelerar las solicitudes de UrlFetch.
Pero creo que es una gran falla limitar esta poderosa infraestructura para emitir no más de 30 solicitudes por 5 segundos. Tal tasa de solicitud de API no me permite continuar el desarrollo de nuevas características interesantes y útiles y un día dejará de funcionar correctamente.
Ahora mi aplicación tiene 90 usuarios y está creciendo y necesito encontrar una solución para maximizar la tasa de solicitud.
Como se sabe, App Engine realiza solicitudes de UrlFetch externas a través del mismo grupo de IP diferentes. Mi objetivo es escribir la funcionalidad aceleración de solicitud para garantizar el cumplimiento de los términos de uso api y utilizar las capacidades distribuidas de GAE.
Así que mi pregunta es cómo proporcionar el rendimiento máximo de la API práctica al tiempo que se cumplen los términos de uso de la API y se utilizan las capacidades distribuidas de GAE.
Aconsejar el uso de otra plataforma/host/proxy es inútil en mi mente.
¿Entonces su extensión de Chrome está enviando solicitudes a su servidor y luego su servidor está enviando solicitudes para apilar API? ¿Sería posible llamar stack api directamente desde chrome? – serg
@serg, sí, sería posible, pero esto significará que la extensión hará constantemente muchas solicitudes al punto final de la API para cada una de las cuentas de usuario. Multiplique esto por el número de cuentas de usuario. También requerirá permiso adicional para acceder a los puntos finales api desde la extensión. Pero sí, ahora estoy pensando en esta solución –
Si permiten 10k solicitudes de una sola API, entonces creo que pueden manejarlo. – serg