Ich habe Floating-Fehler auf Django-Server in der Produktion, es verursacht keine Ausnahmen, nur ein falsches Verhalten. Aber ich kann es nicht auf meiner lokalen Maschine reproduzieren; Also muss ich es auf der Serverseite debuggen. Gibt es irgendwelche Werkzeuge, die alle Zustände aller Variablen protokollieren können, um problematische Anfragen wiederzugeben und herauszufinden, was sich falsch verhält?Gibt es eine Lösung für verzögertes Python-Debugging?
Antwort
Ich stimme Taras Vorschlag, dass Sentry eine großartige Sache zu installieren ist. Wenn das Problem keine Ausnahmen (oder INFO- oder WARN-Meldungen) erzeugt, wird das Problem leider nicht von alleine behoben.
Ich würde vorschlagen, dass (wenn Sie nicht bereits getan haben) zur Umsetzung Wach Protokollierung Ihre Ansichten: https://raven.readthedocs.io/en/stable/integrations/django.html
Sobald Sie Sentry zu Ihrer Produktion App hinzugefügt haben, können Sie Code wie den folgenden hinzufügen in Ihre Ansichten:
def my_view(request):
if some_condition:
foo = 12
else:
foo = 15
logger.info('Line 45 of the Login view', exc_info=True, extra={
'request': request,
'myvar': foo, # A variable you're interested in
})
Dann, wenn Sie die Seite auf die Produktion besuchen, wird es eine Log-Nachricht generieren, die Sie in Wachtposten anzeigen können.
Side Hinweis Sobald Sie, was Ihre speziellen Fehler festgestellt hat, hier ist es wert sein könnte untersuchen, was hinter Ihnen vor Ort nicht um das Problem reproduzieren zu können. Das passiert unvermeidlich jedem, aber es ist eine gute Sache zu minimieren. Einige Techniken dafür können sein:
- Mit django-environ Ihre settings.py Dateien ähnlich aussehen haben/identische
- Wiederherstellen der lokalen Datenbanken von einem Ihrer Produktionsdatenbanksicherungen
- Limiting Code erkennt und verhält sich in prod/dev-Umgebungen anders als die Datei settings.py.
- Verwenden von Andockfenster, um Ihre lokalen/prod-Instanzen nahezu identisch zu halten.
- 1. Gibt es eine browserübergreifende Lösung für getSelection()?
- 2. Gibt es eine endgültige Lösung für Fließkommafehler in Javascript?
- 3. Gibt es eine elegante LINQ-Lösung für SomeButNotAll()?
- 4. Gibt es eine Lösung für das XFS-Lockup in Linux?
- 5. Gibt es eine gute Lösung für einen C# html Sanitizer?
- 6. Gibt es eine O (N) -Lösung für diesen Algorithmus?
- 7. Gibt es eine Google Cloud-Lösung für die synthetische Überwachung?
- 8. Gibt es eine Browser-übergreifende Lösung für performance.now() in Chrome?
- 9. Gibt es eine bessere jQuery-Lösung für this.form.submit() ;?
- 10. Gibt es eine Lösung für das QtWebKit Speicherleck?
- 11. Gibt es eine Javax.comm Drittanbieter-Lösung für Vista und Freebsd?
- 12. Gibt es eine elegantere Lösung für dieses Stück Code?
- 13. Gibt es eine plattformübergreifende Lösung für ImageSource zu Byte []?
- 14. Verzögertes Klickereignis
- 15. Gibt es eine intelligente PHP Emacs-Tagging-Lösung?
- 16. Gibt es eine andere Lösung, wie Wegpunkte abgerufen werden können?
- 17. Dynamische Formularvalidierung in AngularJS - Gibt es eine bessere Lösung/Vorgehensweise?
- 18. Gibt es eine Möglichkeit, Benutzerbereich in ABP-Lösung zu implementieren
- 19. Gibt es in diesem Fall eine bessere Lösung als dynamic_cast?
- 20. unerträglich langsamer Android-Emulator - gibt es eine Lösung?
- 21. Gibt es eine einfache 'is_authenticated' Lösung in Stormpath?
- 22. Nativescript- und Ressourcenordner - gibt es eine einfache Lösung?
- 23. Laravel mehrere get() Anfragen - gibt es eine bessere Lösung?
- 24. Tricky Ruby auf Schienen Problem. Gibt es eine einfache Lösung?
- 25. BufferedImage.getGraphics() führt zu Speicherverlust, gibt es eine Lösung?
- 26. Swift ios9 gibt es eine Lösung, um UIViewControllerBasedStatusBarAppearance verursacht Fehler
- 27. Gradle "Konnte Klassencache nicht öffnen" - gibt es eine bessere Lösung?
- 28. Javascript, HTML und Browsing, gibt es eine einfache Lösung?
- 29. Gibt es in diesem Fall eine schönere Lösung?
- 30. Gibt es eine CSS-Lösung für Räume für Nicht-Raum mit Sprachen zu entfernen?
versuchen, Sentry zu installieren, finde ich es sehr praktisch von der Fehlersuche –