Aktualizuję pamięć podręczną przeglądarki na flasku

Dec 13 2020

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.shplik 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

1 KKS Dec 13 2020 at 13:49

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.

Abdur-RahmaanJanhangeer Dec 13 2020 at 13:44

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