2025년 3월 30일 일요일

Python의 requests 큰파일 다운로드시 처리 방법

 requests 사용시 아무 생각 없이 사용하곤 했었습니다. 그런데 어느 순간 thread가 강제 종료 되는 현상이 발생하였습니다. 구체적인 사유는 없는데 큰파일 다운로드시 발생하는 증상이 었습니다. 제가 사용할때는 ubuntu에서 3G 크기의 파일이었습니다.

메모리 부족 같아서 검색해보니 stream을 사용해야 한다고 합니다.

GPT를 이용해서 가이드를 받아서 코드를 수정했지만 사유없이 종료되는 경우 메모리 부족을 의심하시기 바랍니다.


import requests


url = 'https://example.com/largefile.zip'  # 다운로드할 파일의 URL

file_name = 'largefile.zip'  # 저장할 파일 이름


# 청크 단위로 다운로드

with requests.get(url, stream=True) as response:

    response.raise_for_status()  # 요청이 성공했는지 확인

    with open(file_name, 'wb') as file:

        for chunk in response.iter_content(chunk_size=8192):  # 8KB 단위로 읽기

            file.write(chunk)


print(f"{file_name} 다운로드 완료.")



댓글 없음:

댓글 쓰기