フラスコのブラウザキャッシュを更新しています
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