Problema con (creo) cache en cálculos estadísticas

10 views
Skip to first unread message

Matias Ezequiel Varela

unread,
Mar 16, 2016, 12:32:36 PM3/16/16
to django-ar
Buenas..

Tengo una app django en un vps con nginx+gunicorn+supervisor, donde todo funciona ok, excepto por una vista tipo dashboard. En esa vista, en el get_context_data llamo a una serie de métodos que calculan cosas, para mostrar datos estadísticos y gráficos.

El problema es que no se actualizan los resultados de algunos de estos métodos, es como si estuvieran cacheados. (Sólo ocurre con alguno de estos métodos)

Pongo un ejemplo de uno de estos métodos:

def porcentaje_asistencia_proyecto(hoy=datetime.now()):
total = Proyecto.con_personas.count()
if total == 0:
return 0

perc = Proyecto.con_personas.filter(asistencias__fecha=hoy).count()
val = int(perc * 100 / total)
return "{}".format(val)

Si, en el vps, hago python manage.py shell y ejecuto el método, el valor devuelto es correcto, pero en la vista el valor sigue "pegado" a el valor de, por ejemplo, ayer.

No tengo configurado nada de cache, pero desconozco si django tiene algo por defecto con respecto a esto.

Muchas gracias

Joaquin Quintas

unread,
Mar 16, 2016, 12:37:42 PM3/16/16
to djan...@googlegroups.com
Hola,

No creo que sea un problema de cache, yo revisaría la vista y cómo estas llamado a ese método. 

Si queres compartilo y lo vemos.

Saludos
Joaquin

--
Has recibido este mensaje porque estás suscrito al grupo "django-ar" 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 django-ar+...@googlegroups.com.
Para publicar en este grupo, envía un correo electrónico a djan...@googlegroups.com.
Visita este grupo en https://groups.google.com/group/django-ar.
Para ver esta conversación en el sitio web, visita https://groups.google.com/d/msgid/django-ar/feaff82c-484d-426f-8340-809325039002%40googlegroups.com.
Para acceder a más opciones, visita https://groups.google.com/d/optout.



--
Joaquin

Angel Java Lopez

unread,
Mar 16, 2016, 12:42:25 PM3/16/16
to djan...@googlegroups.com
Sin saber nada del tema, me sospecho que los metodos que te dan ese problema, no tienen parametro obligatorio, como el que mostraste, donde "hoy" puede faltar. Lo estas invocando desde la vista sin parametro, y alguien en el medio de la cadena, decide que es lo mismo que pediste hace un dia.

Es un albur...

Ramiro Morales

unread,
Mar 16, 2016, 12:50:57 PM3/16/16
to djan...@googlegroups.com
2016-03-16 13:32 GMT-03:00 Matias Ezequiel Varela <matu....@gmail.com>:
Buenas..

Tengo una app django en un vps con nginx+gunicorn+supervisor, donde todo funciona ok, excepto por una vista tipo dashboard. En esa vista, en el get_context_data llamo a una serie de métodos que calculan cosas, para mostrar datos estadísticos y gráficos.

El problema es que no se actualizan los resultados de algunos de estos métodos, es como si estuvieran cacheados. (Sólo ocurre con alguno de estos métodos)

Pongo un ejemplo de uno de estos métodos:

def porcentaje_asistencia_proyecto(hoy=datetime.now()):

Creo que el problema está aca -^

Deberias usar un valor por defecto centinela por ejemplo None:


...
def porcentaje_asistenci(hoy=None):
    if hoy is None:
        hoy = datetime.now()
    ....


Atentamente,

--
Ramiro Morales
@ramiromorales

Matias Ezequiel Varela

unread,
Mar 16, 2016, 2:27:39 PM3/16/16
to django-ar
Muchas gracias a los 3 por las respuestas.

...
def porcentaje_asistenci(hoy=None):
    if hoy is None:
        hoy = datetime.now()
    ....

Justamente así estaba antes y decidí "resumirlo" directamente en el parámetro, pero claro, no sabía que no se evaluaba en cada llamada. Cada día se aprende algo nuevo.

Gracias nuevamente.

Saludos
Reply all
Reply to author
Forward
0 new messages