python으로 request를 요청하던 중, API 토큰이 만료되어 새로 발급받은 토큰을 넣어줬다.
그 다음부터 API 호출이 되지 않았다. unable to get local issuer certificate라는 SSL 인증 관련 오류가 계속 발생하는 것으로 보여
아래와 같이 verify=False 파라미터를 이용하여 SSL 인증을 하지 않도록 설정해준 다음,
정상적으로 호출이 완료되었다.
request.post(url=url, headers=headers, verify=False)
그 다음부터는 간헐적으로 ConnectionResetError(54, 'Connection reset by peer) 오류가 발생했다.
해당 오류는 연결이 끊겼다는 메세지인데,
매일 출근해서 내가 request를 보내는 서버 측에 내가 API를 요청했을 때 처음에는 안 되다가,
1분~5분쯤 후에 다시 요청을 하면 정상적으로 호출이 되는 것을 발견하고
호출 실패 시 1분 간격으로 최대 5회 API 재요청을 할 수 있도록 아래와 같이 코드를 다시 작성했다.
import requests
import time
### url, headers 설정하는 부분 ###
#
retry_attempts = 5
for attempt in range(retry_attempts + 1):
try:
requests.request(url=url, headers=headers, verify=False)
### url 호출 성공 시 수행할 작업을 정의하는 부분 ###
#
print("API 호출 완료")
break
except Exception as err:
print("API 호출 실패 : " + str(err))
if attempt < retry_attempts:
print("1분 후" + str(attempt+1) + "회차 재시도")
time.sleep(60)
else:
print("재시도 횟수 초과로 API 호출 실패")
이제 1회차 시도에는 실패하고, 1분 후에 다시 요청하면 정상적으로 호출이 되어 내가 원하는 작업을 수행하도록 만들었다.
터미널에서는 아래와 같이 확인할 수 있다.
그리고 오류는 아니지만 InsecureRequestWarning 경고 메세지가 발생하기도 했다.
나의 경우에는 당분간은 경고 메세지를 확인하고 싶어서
코드에 호출 실패 시 str(err)를 추가하여 어떤 오류인지 확인할 수 있도록 만들었지만
이런 경고 메세지를 없애고 싶다면 아래 2가지 방법이 있다.
urllib3 라이브러리를 이용하는 방법
from urllib3.exceptions import InsecureRequestWarning
from urllib3 import disable_warnings
disable_warnings(InsecureRequestWarning)
requests 라이브러리를 이용하는 방법
import requests
requests.packages.urllib3.disable_warnings()
'Data Science' 카테고리의 다른 글
맥북 M1, M2 zsh lsd 아이콘 깨짐 문제 발생 시 해결 방법 (1) | 2024.08.08 |
---|---|
FastAPI 이해부터 router로 백엔드 API 서버 만들고 docs 문서 확인하기 (0) | 2024.08.07 |
M1 맥북 mysql 설치 및 DB 생성, workbench 설치 (0) | 2024.07.19 |
깃허브 개정 여러개 : Github 특정 Repo만 다른 계정으로 쓰기 (0) | 2024.07.18 |
[오류 해결] M1 M2 brew python 설치 후 맥 VScode pip 안됨 오류 (0) | 2024.07.17 |
댓글