Mise à jour du cache du navigateur sur flask

Dec 13 2020

J'ai un petit serveur flask que j'utilise principalement pour expérimenter et des outils que je développe pour mon propre usage (sur mon réseau domestique). Il fonctionne en mode développement sur une machine Raspberry Pi. Il est configuré pour se lancer au démarrage via rc.local:

sudo -H -u pi /home/pi/Server/start.sh &

et le start.shfichier lit

#!/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

Au premier couple de jours, tout fonctionnait bien, mais maintenant j'obtiens l'erreur suivante:

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

D'après ce que je vois ici, il s'agit d'un problème de cache du navigateur. Comment puis-je dire à Flask de faire face à cela?

Réponses

1 KKS Dec 13 2020 at 13:49

Vous utilisez des sessions / cookies? Essayez de regarder cela, peut-être que la date n'est pas correcte ou invalide. Essayez de l'effacer session.clear()ou utilisez une date d'expiration plus courte. J'ai également eu des problèmes après la mise à niveau de python 2 vers 3 qui ont gâché les cookies, si vous avez fait cela, vous devez vider votre cache pour que les cookies de date / heure python3 puissent être définis.

Abdur-RahmaanJanhangeer Dec 13 2020 at 13:44

Cela semble être une erreur lorsque le temps renvoyé est 0 à partir de ce problème Adafruit CircuitPython NTP . Une approche directe serait de patcher certaines dépendances de flacon avec un PR.

Cependant, cela semble plus être une erreur avec l'âge de votre cache. Essayez de le réduire à un court laps de temps

@app.after_request
def after_request(response):
    response.headers["Cache-Control"] = "max-age=300" # in second
    return response