Aktualizuję pamięć podręczną przeglądarki na flasku
Mam mały serwer typu flask, który używam głównie do eksperymentowania, oraz narzędzia, które opracowuję do samodzielnego użytku (w mojej sieci domowej). Działa w trybie programistycznym na maszynie raspberry pi. Jest skonfigurowany do uruchamiania przy starcie poprzez rc.local
:
sudo -H -u pi /home/pi/Server/start.sh &
a start.sh
plik czyta
#!/bin/bash
cd /home/pi/Server
source /home/pi/Server/venv/bin/activate
export FLASK_APP=/home/pi/Server/app.py
export FLASK_ENV=development
export FLASK_RUN_HOST=192.168.1.104
export FLASK_RUN_PORT=5001
flask run
Przez pierwsze kilka dni wszystko działało dobrze, ale teraz pojawia się następujący błąd:
Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/flask/app.py", line 2309, in __call__
return self.wsgi_app(environ, start_response)
File "/usr/lib/python3/dist-packages/flask/app.py", line 2295, in wsgi_app
response = self.handle_exception(e)
File "/usr/lib/python3/dist-packages/flask/app.py", line 1741, in handle_exception
reraise(exc_type, exc_value, tb)
File "/usr/lib/python3/dist-packages/flask/_compat.py", line 35, in reraise
raise value
File "/usr/lib/python3/dist-packages/flask/app.py", line 2291, in wsgi_app
ctx.push()
File "/usr/lib/python3/dist-packages/flask/ctx.py", line 377, in push
self.app, self.request
File "/usr/lib/python3/dist-packages/flask/sessions.py", line 343, in open_session
data = s.loads(val, max_age=max_age)
File "/usr/lib/python3/dist-packages/itsdangerous.py", line 643, in loads
.unsign(s, max_age, return_timestamp=True)
File "/usr/lib/python3/dist-packages/itsdangerous.py", line 466, in unsign
return value, self.timestamp_to_datetime(timestamp)
File "/usr/lib/python3/dist-packages/itsdangerous.py", line 404, in timestamp_to_datetime
return datetime.utcfromtimestamp(ts + EPOCH)
OverflowError: timestamp out of range for platform time_t
Z tego, co tu widzę , jest to problem z pamięcią podręczną przeglądarki. Jak mogę powiedzieć flaskowi, żeby sobie z tym poradził?
Odpowiedzi
Wygląda na to, że używasz sesji / plików cookie? Spróbuj się temu przyjrzeć, może data jest nieprawidłowa lub nieprawidłowa. Spróbuj wyczyścić go session.clear()
lub użyj krótszej daty ważności. Miałem również problemy po aktualizacji z Pythona 2 do 3, które zepsuły pliki cookie, jeśli to zrobiłeś, musisz wyczyścić pamięć podręczną, aby można było ustawić pliki cookie z datą / godziną python3.
Wydaje się, że jest to błąd, gdy zwrócony czas wynosi 0 z powodu problemu z NTP Adafruit CircuitPython . Bezpośrednim podejściem byłoby załatanie niektórych zależności kolb za pomocą PR.
Jednak wydaje się, że jest to bardziej błąd związany z wiekiem pamięci podręcznej. Spróbuj skrócić to do krótkiego czasu
@app.after_request
def after_request(response):
response.headers["Cache-Control"] = "max-age=300" # in second
return response