Django Tâche En Arrière-Plan

J'ai besoin pour remplir une base de données SQLite toutes les quelques minutes dans Django, mais je veux servir des données périmées jusqu'à ce que les données sont disponibles pour la base de données à mise à jour. (c'est à dire je ne veux pas bloquer pour que les données soient recueillies; la seulement temps, je peux bloquer est si il y a un verrou sur la base de données, au cours de laquelle je n'ai pas le choix.)

Je ne veux pas installer un autre programme ou d'une bibliothèque.

Comment pourrais-je aller sur la configuration d'un autre thread qui pourrait appeler save() sur un tas de modèles, sans se heurter à des problèmes de threading?

  • "Je ne veux pas installer un autre programme ou une bibliothèque" Souvent coûteuse politique. Le céleri fait pour vous. Pourquoi ne pas simplement installer le céleri?
  • Parce que ça va être sur un serveur et je veux éviter le dumping des choses sur le serveur autant que je le peux. N'est-il pas un peu exagéré pour juste un thread séparé?
  • "N'est-il pas un peu exagéré pour juste un thread séparé?" No. de "dumping des choses sur le serveur"? Une installation d'un dumping? Je ne comprends pas l'objection. Voulez-vous que ça fonctionne, ou voulez-vous écrire, de tester et de déboguer beaucoup de code?
  • Je veux que ça fonctionne, mais je ne vois pas pourquoi j'ai besoin d'un ensemble de bibliothèque juste pour faire un seul thread. Si vous pouvez me convaincre, je suis tout à fait pour, mais il semble vraiment inutile pour moi en ce moment, surtout depuis que c'est en Python (ce qui semble inclure un module pour, comme, tout).
  • Malheureusement. Ce n'est pas un "simple fil". Vous gardez en disant ça, mais c'est faux. Il n'y a pas de "convaincre" si vous continuer à prétendre que c'est un "simple fil". Si c'était simple, vous l'avez déjà faite.
  • If it was actually simple, you would have done it already. Bien, en fait, je suis de nouveau à Python et Django, donc je ne peux pas imaginer qu'il soit si difficile; j'ai juste pensé que je ne sais pas comment le faire. Je ne suis pas encore sûr de la partie qui requiert la bibliothèque, cependant: est-il le verrou de base de données? Est-il le thread lui-même? Ou est-ce autre chose qui complique la question, qui, je l'oublie?
  • Vous ne pouvez pas générer un nouveau thread. Django s'exécute dans un environnement de serveur web et cela signifie que, normalement, le code n'est exécuté chaque fois que le serveur reçoit une demande, et cela signifie que le code doit s'exécuter rapidement et à l'arrivée aussi vite que possible pour éviter d'accaparer les serveurs de threads. Aussi, comme le code n'est exécuté à chaque fois qu'une demande est reçue, il est difficile de garantir que quelque chose se passe "toutes les quelques minutes". Si j'étais vous, je voudrais écrire un distinct script python pour cela, et de l'exécuter via cron. Cron est installé partout 🙂
  • En fait, je suis de nouveau à Python et Django". Une raison de plus pour installer et utiliser la solution standard que presque tout le monde utilise: le céleri. Pensez à supprimer votre "aussi ne voulez pas l'installer" à partir de la question, car c'est une très, très mauvaise idée, surtout pour un n00b.
  • Merci beaucoup pour l'info, si je ne suis pas sûr que je vais aller dans cette voie. 🙂 @S. Lott: Votre commentaire est comme dire à un "n00b" pour installer Eclipse ou Visual Studio afin qu'il puisse faire son premier Bonjour, programme Mondial. Il pourrait être utile d'avoir un IDE, mais (1) il est exagéré, (2) la personne pense qu'il aura toujours besoin d'un IDE, (3) il ne saura jamais la raison derrière le conseil. Donc, si au lieu de m'appeler un n00b, vous l'dit moi pourquoi je ne devrais pas le faire (peut-être que AHM fait?), alors je risque de vraiment comprendre ce que tu veux dire.
  • overkill" False". la personne pense qu'il aura toujours besoin d'un IDE". Quoi?", il ne saura jamais la raison derrière les conseils" je continue à essayer d'expliquer et de vous garder de rejet de l'explication. Ce n'est pas simple. De combien de façons différentes, dois-je le dire?
  • Oui, en utilisant un IDE pour écrire de petits programmes est overkill. Très overkill. Si vous pensez que l'utilisation d'Eclipse et Visual Studio/etc. est une bonne introduction à la programmation, alors en effet, je vais probablement jamais comprendre ce que tu veux dire à propos de ce soit, de sorte qu'il ne sera probablement pas la peine d'argumenter sur elle. :\
  • L'IDE analogie n'a pas de sens. Même avec l'explication. Ce n'est pas comparable en quelque sorte à l'aide de Céleri. Veuillez cesser de le répéter.
  • Bien dans ce cas, pas besoin pour moi d'argumenter; merci pour l'entrée.
  • À l'aide d'un add-on comme le céleri est comme l'utilisation d'un SGBDR ou à l'aide d'Apache. C'est l'essentiel. Il n'est rien comme l'utilisation d'un IDE.

InformationsquelleAutor Mehrdad | 2011-07-06