2026/07 4

YouTube Data API 업로드 403 access_denied 해결 — 테스트 사용자, 확인되지 않은 앱, 비공개 잠금 함정까지

파이썬으로 유튜브 자동 업로드를 만들고 첫 OAuth 로그인을 시도하면 높은 확률로 이 화면을 만난다 — "액세스 차단됨: (앱 이름)에서 Google 인증 절차를 완료하지 않았습니다. 오류 403: access_denied". 결론부터: 앱이 잘못된 게 아니라 내 계정을 테스트 사용자로 등록 안 한 것이다. 1분이면 풀린다. 이 글은 그 해결부터, 영상+자막 자동 업로드 성공, 그리고 그 뒤에 숨어 있는 함정 두 개(비공개 잠금, 7일 토큰 만료)까지의 기록이다.바쁜 사람을 위한 3줄 요약증상: OAuth 첫 로그인에서 "액세스 차단됨 — 오류 403: access_denied".원인: OAuth 동의 화면이 "테스트" 게시 상태일 때는 테스트 사용자로 등록된 계정만 로그인할 수 있는데, 본인 계정을 ..

키움 OpenAPI + PyQt5 종료 시 RuntimeError: wrapped C/C++ object of type Kiwoom has been deleted 해결 — 가짜 FATAL 알림의 정체

키움 OpenAPI + PyQt5 자동매매 프로그램이 장 마감 후 정상 종료됐는데도 RuntimeError: wrapped C/C++ object of type Kiwoom has been deleted 에러가 찍히고, 치명 오류(FATAL) 텔레그램 알림까지 날아온 적이 있다면 — 프로그램은 멀쩡하다. 범인은 종료 직전에 예약해둔 QTimer.singleShot이 이미 파괴된 OCX 객체를 뒤늦게 호출하는 것이다. 이 글은 그 원인 분석, 수정, 그리고 다음 거래일 실전 로그로 검증한 기록이다.바쁜 사람을 위한 3줄 요약증상: 정상 종료(종료코드=0) 직후 wrapped C/C++ object of type Kiwoom has been deleted + 가짜 FATAL 알림.원인: 종료 전에 예약된 Q..

키움 opt10080 분봉 캐시 함정 — 캐시가 있는데도 최신 데이터를 안 받아오는 이유

키움 opt10080으로 분봉을 캐시에 모아두고 재사용하는 수집기를 쓰고 있다면, 이 질문을 해봐야 한다 — "캐시를 건너뛰는 조건이 시작일만 검사하고 있지 않은가?" 그렇다면 일부 종목은 과거 어느 날짜에 멈춘 채, 재실행해도 영영 최신 데이터를 받아오지 않는다. 1편(키움 -209 해결기)과 같은 수집기에서 잡은, 정반대 방향의 버그다.바쁜 사람을 위한 3줄 요약증상: 일부 종목의 분봉 캐시가 과거 날짜에 멈춘 채, 재실행해도 "캐시재사용"으로 건너뛰어진다.원인: 캐시 생략 조건이 "시작일까지 데이터가 있나"(min)만 검사하고 "최신까지 있나"(max)는 안 본다.수정: 시작일·종료일 양방향 검사(reach_back AND reach_fwd)로 바꾸고, 부족분만 받아 병합한다.1편과의 관계1편의 버..

키움 OpenAPI "조회횟수 제한 : -209" 해결기 — opt10080 증분 조회로 조회량 87% 줄이기

키움 OpenAPI로 분봉 데이터를 수집하다 -209 에러에 막힌 적이 있다면, 원인은 "너무 빨리 조회해서"가 아니라 "이미 있는 데이터를 매번 통째로 다시 받아서"일 가능성이 높다. 이 글은 633종목 1분봉 수집기가 -209에 막힌 실제 사례에서, 원인 → 수정 → 검증까지의 기록이다.환경Python 3.10 (32bit) + PyQt5 + 키움 OpenAPITR: opt10080 (주식분봉차트조회)백테스트용 1분봉 수집기: 종목별 CSV 캐시 저장, 재실행 시 캐시 재사용1. 증상백테스트용으로 633종목의 1분봉을 수집하던 중, 수집이 한창 진행되다가 키움 팝업이 떴다.조회횟수 제한 : -209이 팝업이 뜨면 이후 모든 TR 조회가 일시 차단된다. 프로그램을 종료하고 기다렸다가(체감상 10~30분..