2017-10-23 1 views
0

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?

+1

versuchen, Sentry zu installieren, finde ich es sehr praktisch von der Fehlersuche –

Antwort

2

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:

  1. Mit django-environ Ihre settings.py Dateien ähnlich aussehen haben/identische
  2. Wiederherstellen der lokalen Datenbanken von einem Ihrer Produktionsdatenbanksicherungen
  3. Limiting Code erkennt und verhält sich in prod/dev-Umgebungen anders als die Datei settings.py.
  4. Verwenden von Andockfenster, um Ihre lokalen/prod-Instanzen nahezu identisch zu halten.
Verwandte Themen