Last active
July 25, 2019 14:31
-
-
Save EsauPR/553c6e2e5f9a0e05ff7ab5a45922e919 to your computer and use it in GitHub Desktop.
Extracto de código de articulo: https://blog.karmapulse.com/integrando-facebook-como-fuente-de-datos
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* | |
Porcentaje de nivel de confianza, limita la exactitud de los cálculos, toma valores del 1 al 100 | |
*/ | |
CONFIDENCE_LEVEL = 80 | |
/* | |
Número de llamadas permitidas por usuario activo | |
*/ | |
CALLS_PER_USER = 200 | |
/* | |
Tiempo de expiración de las llaves en Redis | |
*/ | |
KEY_EXPIRATION_TIME = 3600 | |
/* | |
Valor máximo que puede alcanzar cualquier de las tres estadísticas de uso | |
de la aplicación retornadas por Facebook antes de empezar a limitar la frecuencia | |
de las llamadas | |
*/ | |
MAX_STAT_VALUE = 80 | |
/* | |
Calcula el número de llamadas por minuto | |
*/ | |
get_calls_per_minute: | |
// Usuarios activos diarios | |
active_users = get_active_users() | |
// Número de llamadas por hora | |
calls_per_hour = CALLS_PER_USER * ACTIVE_USERS | |
// Estadisticas de uso de la aplicación | |
call_count, total_time, total_cputime = get_app_usage() | |
// Estadística de uso más alta | |
highest_stat = max(call_count, total_time, total_cputime) | |
// Limitación de número de llamadas si se supera el valor crítico de uso de la app | |
limitation = 1 | |
if highest_stat > MAX_STAT_VALUE: | |
limitation = 0.5 + 0.5 / (100.0 - MAX_STAT_VALUE) * (100.0 - highest_stat) | |
calls_per_minute = calls_per_hour * limitation * CONFIDENCE_LEVEL / 6000 | |
return calls_per_minute | |
main: | |
// Obtiene el número de llamadas disponibles por minuto | |
calls_per_minute = get_calls_per_minute() | |
// Inserta en Redis la llave con el número de llamadas por minuto y expiración de una hora | |
release_tokens(calls_per_minute, KEY_EXPIRATION_TIME) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment