Berechnen Sie die Ausführungszeit für jede Seite in Python-Flask
Was ist ein guter Weg, um die Berechnung der Ausführungszeit für jede Seite geladen mit Python Kolben Bibliothek?
Ich dachte, ein start-timer in den Ansichten/__ init__.py:
@app.before_request
def before_request():
g.start = time.time()
Aber wo würde ich das Ende Teil wird der timer um die Differenz zu ermitteln, und wie kann ich es in den footer von meinem html-template?
Dank.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Steckte es in
teardown_request
Funktion:In
teardown_request
Sie sind nicht erlaubt, um die Antwort zu ändern, Wenn Sie wollen, um den berechneten string in Ihre Antwort verwendenafter_request
:before_request
richtig funktioniert? Hinzufügen einesprint
Anweisung nachg.start = time.time()
und überprüfen, dass Ihr code dort landet oder nicht. Es ist eine gute Idee, um aktualisieren Sie Ihre Frage mit der neuen source-code.str.replace
gibt eine NEUE Zeichenfolge, die Sie zu tun :response.response[0]=response.response[0].replace('__EXECUTION_TIME__', str(diff))
2. @umgarnen, Sie können Bedingungen hinzufügen, um die diff-hier zum Beispiel:if response.response and response.content_type.startswith("text/html")
Die anderen Antworten sind im wesentlichen korrekt, aber ziemlich veraltet jetzt.
Folgende arbeiten mit Python 3.6 /3.7 und der Kolben 1.0.2:
Mithilfe
response.set_data
, die content-length wird korrekt aktualisiert, die von Flask. Bitte beachten Sie auch die Verwendung von byte-strings und die Codierung.Müssen Sie auch aktualisieren Sie den content-length-header sonst Browsern aufregen (und Chrome scheint es zu unvorhergesehenen Ergebnissen kommen).
Hatte ich "broken pipe error" statischen Dateien mit Peter Bauer zu beantworten und Probleme mit redirect (HTTP 301), also schaltete ich den code, falls es hilft.