J'ai un grand tableau, que je voudrais charger en mémoire seulement une fois quand django démarre et le traiter comme une variable globale en lecture seule. Quel est le meilleur endroit pour mettre le code pour l'initialisation de ce tableau? Si je le mets dans settings.py, il sera réinitialisé chaque fois que le module de paramètres est importé, correct?Initialisation Django
Répondre
settings.py est le bon endroit pour cela. Settings.py est, comme tout autre module, chargé une fois. Il y a toujours le problème du fait qu'un module doit être importé une fois pour chaque processus, ainsi un style de resweing de serveur web (comme Apache) le rechargera une fois pour chaque instance en question. Pour mod_python, ce sera une fois par processus. pour mod_wsgi, il est probable que ce soit une seule fois, sauf si vous devez redémarrer. Tl; les modules dr sont importés une seule fois, même si plusieurs instructions d'importation sont utilisées. le mettre dans settings.py
settings.py est pour les paramètres Django; il est bien d'y mettre vos propres paramètres, mais l'utiliser pour des structures de données sans configuration arbitraire n'est pas une bonne pratique. Il suffit de le placer dans le module auquel il appartient logiquement, et il ne sera exécuté qu'une seule fois par instance. Si vous voulez garantir que le module est chargé au démarrage et non lors de la première utilisation ultérieure, importez ce module depuis le niveau supérieur __init__.py
pour le forcer à être chargé immédiatement.
Cela devrait être la réponse acceptée –
Mais que se passe-t-il si ce code d'initialisation __init__.py dépend de certains paramètres? –
- 1. Initialisation Java Web App
- 2. initialisation d'objet en C#
- 3. Initialisation bizarre Inline Array
- 4. C# Variable Question Initialisation
- 5. initialisation structures/tableaux emboîtés
- 6. initialisation LINQ et objet
- 7. Emacs - Initialisation Ubuntu
- 8. Faces Backing Bean initialisation
- 9. Initialisation d'une variable GUID
- 10. Initialisation de pointeurs en C++
- 11. Initialisation du tableau en F #
- 12. Initialisation par défaut d'une collection
- 13. C++ initialisation classe tableau instance
- 14. Est-ce que C# Collection Initialisation Syntaxe Éviter par défaut Initialisation Frais généraux
- 15. Initialisation de tableau dans C++ géré
- 16. Iphone SQLite initialisation et la fermeture
- 17. C++ modèle initialisation pointeur à membre statique
- 18. Initialisation d'objet et "idiome de constructeur nommé"
- 19. Initialisation de classe dynamique dans .NET
- 20. Delphi: initialisation de l'application - meilleures pratiques/approche
- 21. Initialisation d'un vecteur avant main() en C++
- 22. VB.Net Initialisation d'un tableau à la volée
- 23. Initialisation d'une liste générique en C#
- 24. Pourquoi cette initialisation Pointeur-Pointeur Seg Seg?
- 25. Anonyme initialisation de classe dans VB.Net
- 26. une Initialisation std :: string d'un personnage
- 27. Rails Models counter_cache initialisation de colonne
- 28. Membres de données OCaml sans initialisation
- 29. initialisation du composant - Runtime vs DesignTime
- 30. Initialisation des onglets Jquery depuis asp.net pageload
Pour mod_wsgi, ce sera aussi une fois par processus pour cette instance de Django. Le nombre de processus dépend de l'utilisation du mode embarqué ou du mode démon et donc du nombre de processus exécutés par votre instance Django. Pour plus de détails sur les différents modes de fonctionnement de mod_wsgi, voir 'http://code.google.com/p/modwsgi/wiki/ProcessesAndThreading'. –
L'initialisation dans settings.py entraîne souvent des problèmes d'importation circulaire. Je me suis souvent battu avec cela et je préviens quiconque de faire cela à propos des importations circulaires. –