フラスコのブラウザキャッシュを更新しています

Dec 13 2020

私は主に実験用に実行している小さなフラスコサーバーと、(ホームネットワーク上で)自己使用のために開発しているツールを持っています。ラズベリーパイマシンの開発モードで実行されています。起動時にrc.local次の方法で起動するように構成されています。

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

そしてstart.shファイルは読みます

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

最初の数日はすべて正常に実行されていましたが、現在は次のエラーが発生します。

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

私がここで見たものからこれはブラウザのキャッシュの問題です。どうすればフラスコにこれに対処するように指示できますか?

回答

1 KKS Dec 13 2020 at 13:49

セッション/ Cookieを使用しているようですか?それを調べてみてください。日付が適切でないか無効である可能性があります。クリアするsession.clear()か、より短い有効期限を使用してみてください。また、Python 2から3にアップグレードした後、Cookieを台無しにする問題が発生しました。その場合は、キャッシュをクリアしてpython3の日付/時刻Cookieを設定できるようにする必要があります。

Abdur-RahmaanJanhangeer Dec 13 2020 at 13:44

これは、このAdafruit CircuitPythonNTPの問題から返された時間が0の場合のエラーのようです。直接的なアプローチは、いくつかのフラスコの依存関係にPRを適用することです。

ただし、これはキャッシュの経過時間のエラーのようです。短時間に減らしてみてください

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