2009-09-25 4 views
1

J'écris une application de base de données où certaines parties de la base de données peuvent nécessiter des mises à jour en fonction de l'heure, et non pas en fonction des actions de l'utilisateur. Par exemple, certaines valeurs peuvent être mises à jour quotidiennement et certaines autres valeurs doivent être mises à jour, par exemple quatre heures après la création de la base de données.Cronjobs dans Django

Ainsi j'ai besoin d'un moyen de mettre à jour les valeurs régulièrement (un script qui met à jour la base de données quotidiennement) et un moyen de mettre à jour les valeurs à un moment spécifique (quand l'entrée est créée heures).

La base de données sera gérée via une interface Web, j'utilise donc Django pour configurer la base de données et l'administration, car Django rend la conception de la base de données très agréable. Cependant, je n'ai aucune idée de comment mettre en place l'autre côté, le côté qui met à jour la base de données à certains moments.

Comment les gars suggéreriez-vous de faire cela? Serait-il suffisant d'exécuter un script python et de l'exécuter avec un cronjob quotidien, ou n'est-ce pas la meilleure pratique? Est-ce que ce genre de chose est fait fréquemment, et existe-t-il des outils/méthodes pour le faire? Je n'ai aucune expérience de ce genre de choses, et j'aimerais savoir comment cela se fait généralement avant de sauter dans la roue et de réinventer la roue.

Répondre

6

Vous pouvez définir une tâche de gestion (celui qui est appelé avec ./manage.py <task name>) qui fait ce que vous avez besoin. De cette façon, vous avez accès à tous les paramètres, modèles et choses que vous utilisez dans votre projet. Et il est aussi facile de maintenir un tel script.

+1

Si vous avez accès à des scripts dans un cronjob, je préfère le faire de cette façon. Créer des tâches de gestion est la façon Django de le faire. Vous bénéficiez également de l'avantage de pouvoir exécuter manuellement les commandes à partir de la ligne de commande. –

+0

Absolument. C'est très facile à faire: http://docs.djangoproject.com/fr/dev/howto/custom-management-commands/ – DrBloodmoney