플라스크에서 브라우저 캐시 업데이트
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
세션 / 쿠키를 사용중인 것 같습니까? 날짜가 적절하지 않거나 잘못되었을 수 있습니다. 그것을 지우 session.clear()
거나 더 짧은 만료 날짜를 사용하십시오. 나는 또한 파이썬 2에서 3으로 업그레이드 한 후 쿠키를 엉망으로 만든 문제가 있었는데, 그렇게했다면 캐시를 지워서 python3 날짜 / 시간 쿠키를 설정할 수 있습니다.
Abdur-RahmaanJanhangeer Dec 13 2020 at 13:44
이 Adafruit CircuitPython NTP 문제 에서 반환 된 시간이 0 일 때 이는 오류로 보입니다 . 직접적인 접근 방식은 일부 플라스크 종속성을 PR로 패치하는 것입니다.
그러나 이것은 캐시 수명에 대한 오류로 보입니다. 짧은 시간으로 줄이십시오.
@app.after_request
def after_request(response):
response.headers["Cache-Control"] = "max-age=300" # in second
return response