캐쉬가 업데이트 안됩니다.
PriceCache는 한 번 채우면 무한정 유지됩니다. 그리고 캐시를 주기적으로 갱신하는 주체가 없습니다. 그래서 한 번 들어간 값은 bulk_update를 다시 불러주기 전까지 영원히 고정됩니다.
Câu trả lời 2
0
안녕하세요!
말씀하신 대로 강의의 PriceCache는 한 번 들어간 값을 자동으로 갱신하거나 만료시키는 주체가 없습니다. bulk_update()를 다시 불러주기 전까지 값이 고정되는게 맞아요.
그런데 왜 강의 실습은 멀쩡히 돌아갈까요?
realtime-prices API의 폴백 로직에 있습니다. 우리는 bulk_update()를 어디서도 호출하지 않기 때문에 캐시가 항상 비어 있고 → 모든 요청이 "캐시 미스" → 전부 yfinance로 실시간 조회됩니다. 즉 데모에서는 캐시가 사실상 안 쓰이고, yfinance가 매번 싱싱한 값을 대신 답해주기 때문에 문제가 안 보이는 거예요.
이번 파트의 목표는 "싱글턴 / 스레드 안전(Lock) / 버전 기반 SSE 같은 구조를 손에 익히는 것" 이었습니다. 실시간 가격을 계속 밀어 넣는 갱신 파이프라인은 의도적으로 다음 단계로 미뤄둔 단순화예요. (강의가 너무 무거워지지 않도록요.)
실전에서 진짜 "실시간 캐시"로 완성하고 싶다면, 두 가지만 채우면 됩니다 — Claude Code에 이렇게 시켜보세요:
▎
▎ price_cache.py와 kr_market.py를 보강해줘.
▎
▎ 1. PriceCache에 백그라운드 갱신 스레드를 추가해줘.
▎ - 앱이 시작될 때 데몬 스레드 1개를 띄움
▎ - _tracked에 등록된 종목들을 N초(예: 10초)마다 yfinance로 조회
▎ - 조회 결과로 bulk_update() 호출 → _version 자동 증가
▎
▎ 2. get_prices()에 TTL 만료를 추가해줘.
▎ - updated_at이 ttl초(예: 30초)보다 오래된 값은 "stale"로 보고
▎ - 반환에서 제외하거나 yfinance로 다시 폴백
▎
이 두 개(①갱신 스레드 + ②TTL 만료)를 넣으면, 비로소 SSE의 버전이 실제로 바뀌면서 화면이 진짜로 실시간 갱신되고, 갱신 스레드가 잠깐 멈춰도 낡은 값이 그대로 나가지 않게 됩니다.
0
안녕하세요, 인프런 AI 인턴입니다. 강저그님.
PriceCache가 한 번 채워지면 값이 고정되어 갱신되지 않는 문제를 겪고 계신 것 같습니다. 이 문제는 캐시 메커니즘의 특성상 발생할 수 있으며, 주기적으로 캐시를 갱신할 필요가 있습니다. 이를 해결하기 위한 몇 가지 조언을 드리겠습니다.
캐시 갱신 방법
주기적 갱신 로직 추가:
- 특정 시간이 경과했을 때 자동으로 캐시를 초기화하고 다시 채우는 로직을 추가합니다. 예를 들어, 특정 시간마다
bulk_update함수를 실행하여 최신 데이터를 반영합니다.
- 특정 시간이 경과했을 때 자동으로 캐시를 초기화하고 다시 채우는 로직을 추가합니다. 예를 들어, 특정 시간마다
TTL(Time-To-Live) 설정:
- 캐시에 TTL을 설정하여 일정 시간이 지나면 자동으로 무효화되도록 설정합니다. 이를 통해 주기적으로 데이터를 갱신할 수 있습니다.
- 캐시에 TTL을 설정하여 일정 시간이 지나면 자동으로 무효화되도록 설정합니다. 이를 통해 주기적으로 데이터를 갱신할 수 있습니다.
캐시 무효화 트리거 설정:
- 특정 이벤트가 발생할 때 캐시를 무효화하는 트리거를 설정합니다. 예를 들어, 입력 데이터가 변경되면 캐시를 무효화하여 재갱신할 수 있습니다.
- 특정 이벤트가 발생할 때 캐시를 무효화하는 트리거를 설정합니다. 예를 들어, 입력 데이터가 변경되면 캐시를 무효화하여 재갱신할 수 있습니다.
참고 가능한 기존 답변
이와 관련된 문제에 대해 다른 수강생들이 도움을 받았던 게시물을 소개합니다:
- 캐시 갱신 관련 질문: 캐시 갱신 문제와 관련된 다양한 해결책을 안내하고 있습니다.
캐시 메커니즘은 성능 향상에 중요한 역할을 하지만, 잘못 설정되면 오래된 데이터를 반환할 수 있습니다. 위의 방법들을 활용하여 캐시가 최신 상태로 유지되도록 설정하시기 바랍니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
VCP 시그널 상태 추가 스크립트 에서 return_pct 조건
0
6
2
노션 사용권한 요청
0
25
2
시각화_가이드 자료는?
0
26
2
거래대금에 대한 필터링 문제
0
29
1
41강에 vcp 결과가 다르게 나옵니다.
0
24
2
뉴스 검색에서 날짜 필터링
0
32
2
scorer.py 에 뉴스/재료 점수 부분이 없어요.
0
33
2
제가 만든 파일로 강의 수강을 이어가도 되나요?
0
31
2
14강은 언제 올라올까요??
0
48
2
Part03 프롬프트 14 기간 조정(횡보 후 돌파) 입력 시 claude에서 수정안 발생
0
42
1
best of best 점수 합산
0
49
1
질문이 있습니다.
0
60
2
안녕하세요? 섹션14는 강의가 언제부터 올라오나요? 너무나 궁금하고 기대가 됩니다~ ^^
0
62
2
antigravity 2.0은 화면이 많이 다르네요.
0
90
2
36. 텔레그램 연동(특강) 노션 링크
0
55
2
오류 문구 입니다.
0
52
1
Part2 - 19번 ~ 20번 강의 사이에 일부 내용이 생략된듯합니다.
0
70
2
Gemini 모델 변경 문의
0
66
2
part2 gemini api 연동
0
62
3
늘 컴퓨터를 켜두어야 하는 것에 대한 질문입니다.
0
51
1
노션 승인 관련
0
65
2
Part2 자료에 대한 질문입니다.
0
57
3
강의 일정
0
57
2
Notion 권한 승인 요청 드립니다.
0
59
2

