Memperbarui cache browser di flask

Dec 13 2020

Saya memiliki server labu kecil yang saya jalankan sebagian besar untuk bereksperimen dan alat yang saya kembangkan untuk digunakan sendiri (di jaringan rumah saya). Ini berjalan pada mode pengembangan pada mesin raspberry pi. Ini dikonfigurasi untuk diluncurkan saat startup melalui rc.local:

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

dan start.shfile tersebut terbaca

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

Pada beberapa hari pertama semuanya berjalan dengan baik, tetapi sekarang saya mendapatkan kesalahan berikut:

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

Dari apa yang saya lihat di sini Ini adalah masalah cache browser. Bagaimana saya bisa memberi tahu labu untuk mengatasinya?

Jawaban

1 KKS Dec 13 2020 at 13:49

Sepertinya Anda menggunakan sesi / cookie? Coba lihat itu, mungkin tanggalnya tidak tepat atau tidak valid. Coba bersihkan session.clear()atau gunakan tanggal kedaluwarsa yang lebih pendek. Saya juga mengalami masalah setelah memutakhirkan dari python 2 ke 3 yang mengacaukan cookie, jika Anda telah melakukannya, Anda perlu menghapus cache Anda sehingga cookie tanggal / waktu python3 dapat diatur.

Abdur-RahmaanJanhangeer Dec 13 2020 at 13:44

Ini tampaknya menjadi kesalahan ketika waktu yang dikembalikan adalah 0 dari masalah Adafruit CircuitPython NTP ini . Pendekatan langsung adalah dengan menambal beberapa dependensi flask dengan PR.

Namun ini tampaknya lebih merupakan kesalahan dengan usia cache Anda. Coba kurangi menjadi waktu yang singkat

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