8
votes

Rechargement chaud / échange avec python

Je veux des changements de code pour prendre effet immédiatement pendant le développement. Comment détecter les fichiers modifiés et les recharger dans l'application Python exécutant (2.7)?

EDIT:

Après avoir lu les pages liées par "Ivo van der Wijk", je pense qu'il serait préférable de redémarrer l'application Web lorsque le code change - comme Django. Donc, la question réelle est la suivante: Comment surveiller les modifications du fichier?


0 commentaires

3 Réponses :


6
votes

Cette question a été posée A numéro de fois

Vous pouvez utiliser recharge (module) pour cela, mais méfiez-vous des effets secondaires méchants. Par exemple, le code existant sera basé sur le code d'origine, il ne recevra pas de nouveaux attributs ou basoclasses ajoutés par magie.


0 commentaires

2
votes

Cela n'a pas de sens pour la plupart des applications, car vous obtiendrez des effets secondaires en utilisant recharger . Plus le temps que vous passez sur le code qui détecte les modifications et rechargez tous les modules aurait pu être dépensé pour simplement redémarrer l'application. Il est très compliqué si vous importez de nombreux modules ou si vous avez un projet contenant de nombreux sous-modules.

Dans certains cas, c'est une bonne idée cependant. Le Django Web Framework fournit un serveur de développement ( gérer.py runserver ) qui recharge automatiquement les modules modifiés. Jetez un coup d'œil au django.utils.Autoreload - Il teste tous les fichiers Python pour des modifications à l'aide de l'heure de modification des fichiers. Comme indiqué précédemment, ce n'est qu'une bonne idée de certaines applications. Les applications Web sont quelque peu apatrides et peuvent ainsi être rechargées avec peu d'effets secondaires.


1 commentaires

Django recharge l'ensemble du programme lorsqu'un module change. Rechargement de modules individuels est extrêmement dangereux, d'autant plus que vous le faites pendant le développement lorsque les problèmes que cela provoqueront seront mélangés avec les bugs réels que vous essayez de résoudre, aggravant le problème.



7
votes

Je voulais le même effet pour certains de mes scripts Python, alors je suis allé et a rendu le script Sourcechangonitoritor.py. Vous pouvez le trouver avec des instructions ici < / a>. Si vous voulez juste le script, ici est une valeur directe Lien


1 commentaires

Merci je l'aime. Je l'ai porté à Python3 si quelqu'un est intéressé: github.com/makergeek/python-hotreload