2010-02-25 4 views
0

J'ai une application web qui essaie de déterminer quand les gens assistent à des événements. Un participant est enregistré chaque fois qu'il se connecte à un emplacement particulier, et un participant est extrait à chaque fois qu'il se déconnecte. Le problème est que lorsque l'on détermine que quelqu'un est réellement "extrait", parce qu'il peut ne pas se déconnecter activement du système utilisateur Django, je dois trouver un moyen de l'enregistrer comme étant retiré après 24 heures. À l'heure actuelle, j'utilise une requête ORM horriblement simpliste dans un gestionnaire pour lister les utilisateurs «actifs» et «inactifs» sur le site.Post-traitement des données de présence avec Django

expires = datetime.datetime.today() - datetime.timedelta(seconds=settings.AUTO_CHECKOUT_AFTER) 
# Get people who were last active more than 24 hours ago OR who have checked out 
inactive_users = User.objects.all().filter(Q(attendee__last_active__lt = expires) \ 
       | Q(attendee__checked_out__lte = datetime.datetime.now()), \ 
       attendee__location=location).exclude(attendee__checked_out = None, attendee__checked_in__gte = expires).distinct() 

Quelle est la meilleure façon de le faire? Je suppose qu'il faut un Django équivalent à un travail CRON pour extraire automatiquement les utilisateurs qui sont inactifs.

Répondre

1

Vous n'avez pas besoin d'un 'Django équivalent à un travail cron', vous avez juste besoin d'un travail cron. Le cron devrait exécuter un script Django autonome - vous pouvez le faire de plusieurs façons, mais le plus simple est de créer un standalone ./manage.pycommand.

Questions connexes