--
Has recibido este mensaje porque estás suscrito al grupo "rubysur" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a rubysur+u...@googlegroups.com.
Para acceder a más opciones, visita https://groups.google.com/d/optout.
Gracias Angel, Lorenzo y Julio!Una aclaración general: no estoy atado a Ruby, si algun otro lenguaje resulta más flexible para solucionar este problema o tiene características que me lo facilitan o librerías que me simplifican la vida, bienvenido sea.Lorenzo, lo que decis de Camel tiene muy buena pinta! Lo voy a chusmear!
Angel, pensé también la alternativa que sugerís. Coincido en que es más eficiente y que la verdad de la milanesa la tiene el worker. Me pregunto si no perderé un poco de control (siempre puedo tener distintos "modos" de funcionamiento) y si es igual de limpio. Quizás el comentario de Julio sobre limites globales haga que tenga que tener centralizada la cantidad de llamados globales.Julio,
No, no estoy seguro. El user rate limit no creo q lo pase. El escenario esperado es muchas llamadas pero a distintos usuarios. Para un usuario en particular dudo que supere las 100 llamadas por día en el peor caso. Con respecto al app rate limit, no me queda claro, pero puede que sea un problema. En principio el tipo de llamadas que voy a hacer no deberían ser muy complejas (actualizar un estado, fijarse cuanta gente le dio like/share/comment a un post, ver cuantos amigos tengo, etc.). Trabajaste alguna vez con este problema? Tenes alguna sugerencia? Yo lo que pienso es que de alguna forma el Candy Crush postea en todos los muros en los que postea con la frecuencia con la que lo hace…
- Control de la cantidad de llamadas en los últimos 15 minutos: no se me ocurre una estructura de datos copada para hacer esto. No quiero tirar una query para ver cuantos llamados van. Una lista con un combinación de #drop_while y #length?
- Quién lleva la cuenta? Desde el diseño también tengo que decidir si el proceso lleva la cuenta de cuantas llamadas hizo o alguien externo lo va regulando y le dice "frena", "arranca", etc.
- Cola de tareas: qué uso para la cola donde guardo las tareas a ejecutar. Por lo que leí en un thread hace un poquito más de un mes en esta lista lo que mas me convence es Sidekiq.
- Cómo guardo los resultados de los llamados? Le pego directo a la base? Un callback? Meto los resultados en otra cola y que alguien se ocupe? En principio esta última me suena la más limpia.
- Hay un servidor central? Me permitiría levantar más instancias si las tareas están tardando mucho, controlar la cantidad de llamados a la api de cada servidor que hace llamadas, decirle a que proceso switchear si está llegando al límite o hay otras prioridades, etc. Siento que está bueno porque me da más control.
En fin, como ven estoy en un quilombo, pero que a mi al menos me resulta interesante. Cualquier ayuda que me puedan dar es bienvenida.
Gracias por la respuesta Manuel!!Me resultan muy interesantes los comentarios que haces, pero me llama particularmente la atención el de "Si seguis las reglas de FB no vas a necesitar engañarlos utilizando varias IPs.". Como resuelven entonces hacer más de 600 llamadas cada 600 segundos?
Se puede conocer un poco la arquitectura que manejan? Si les resulta pesado escribir mucho y no les molesta (y están en BsAs o alrededores) también podemos juntarnos a charlar un rato.