Ich möchte die Debug-Ausgaben von Produktionen trennen, indem Sie eine Variable definieren, die verwendet werden kann, um das Modul zu verarbeiten. Es kann nicht in der Umgebung definiert werden. Irgendwelche Vorschläge für Globals wiederverwendet über Klassen in Modulen? Zusätzlich gibt es eine Möglichkeit, dieses variable Flag zu konfigurieren, um appengine mitzuteilen, dass dieser Code nicht verwendet wird.Debug-Variable in Python
Antwort
Werfen Sie einen Blick auf die logging module, die vollständig von Google App Engine unterstützt wird. Sie können Protokollierungsebenen wie Debug, Warnung, Fehler usw. angeben. Sie werden in der DevServer-Konsole angezeigt und auch im Anforderungsprotokoll gespeichert.
Wenn Sie nach spezifischen Code nur ausgeführt wird, wenn der Dev-Server ausgeführt wird, können Sie dies tun:
if os.environ['SERVER_SOFTWARE'].startswith('Development'):
print 'Hello world!'
Die SERVER_SOFTWARE Variable wird immer dann gesetzt, die Google App Engine.
Wie für modulspezifische Variablen; Module sind Objekte und können Werte wie jedes andere Objekt haben:
my_module.debug = True
Alle Variablen auf Modulebene für alle Klassen in das Modul global sind.
Hier ist meine Datei: mymodule.py
import this
import that
DEBUG = True
class Foo(object):
def __init__(self):
if DEBUG: print self.__class__, "__init__"
# etc.
class Bar(object):
def do_work(self):
if DEBUG: print self.__class__, "do_work"
# etc.
Ein einzelner, auf Modulebene DEBUG
Variable wird von allen Instanzen dieser beiden Klassen zu finden. Andere Module (z. B. this.py
und that.py
) können ihre eigenen DEBUG
Variablen haben. Diese wären this.DEBUG
oder that.DEBUG
und sind nicht verwandt.
thx @Lott, ich definierte die Variable in __main und fehlgeschlagen – dhaval
- 1. Python-Code in Python analysieren?
- 2. Neu in Python Bytes in Python 2.4.3
- 3. in Python
- 4. in Python
- 5. In Python in bash
- 6. python - OpenCV mat :: convertTo in python
- 7. Python 2.7. Kodierung in Python und cmd
- 8. Embed Python Interpreter in einer Python-Anwendung
- 9. Python: Java wirft Äquivalent in Python
- 10. Python-Threads in eingebettetem Python: Wie?
- 11. Einen Python-Azure-Webdienst in Python verwenden
- 12. Python: os.chdir funktioniert nicht in Python?
- 13. Python-Deskriptoren funktionieren nicht in Python 2.7
- 14. Wie 3.5 in Python postgresql Zeitstempel in Python
- 15. Kreuzung in sqlite3 in Python
- 16. Assoziativität von "in" in Python?
- 17. Konvertieren in Datenrahmen in Python
- 18. in einer Variablen in Python
- 19. Datumsformat in Python in Windows
- 20. Wörterbuch in Kleinbuchstaben in Python
- 21. Schreiben in CSV in Python
- 22. Doppelpunkt in Dateinamen in Python
- 23. In-Memory-Datenbank in Python
- 24. Bedingte Zählen in Python
- 25. Was bedeutet "*" in Python?
- 26. writeline Problem in Python
- 27. Netcat-Implementierung in Python
- 28. NTLM-Authentifizierung in Python
- 29. Map-Methode in Python
- 30. harmonischer Mittelwert in Python
+1 für das Logging-Modul, das ist wirklich die beste Antwort auf @ Dhaval das eigentliche Problem, wie er es erklärt. –
thx Blixit, mir war die Variable server_software nicht bekannt – dhaval
@dhaval: Umgebungsvariablen sind in allen Betriebssystemen verfügbar, so dass diese Technik überall funktioniert - stellen Sie sicher, dass Sie die Umgebungsvariable selbst setzen, wenn Sie nicht auf GAE sind. –