파이썬의 requests
모듈은 HTTP 요청을 간편하게 처리할 수 있는 강력한 도구입니다. 이 모듈을 사용하면 웹 사이트에서 데이터를 읽어오거나 API를 호출하는 등 다양한 작업을 수행할 수 있습니다.
하지만 때로는 서버로부터 큰 용량의 데이터를 스트리밍 방식으로 받아와야 할 때가 있습니다. 예를 들어, 파일 다운로드나 실시간 데이터 스트리밍 등입니다. 이런 경우, requests
모듈의 스트리밍 응답 기능을 사용하면 메모리를 효율적으로 관리하면서 데이터를 처리할 수 있습니다.
스트리밍 응답 처리하기
스트리밍 응답 처리를 시작하기 위해서는 requests
모듈에서 제공하는 get
함수를 사용하여 HTTP GET 요청을 보내야 합니다. 다음은 기본적인 스트리밍 요청 예제입니다:
import requests
url = 'http://example.com/streaming-data' # 스트리밍 데이터를 가져올 URL
response = requests.get(url, stream=True) # 스트리밍 응답 요청
# 응답을 조각조각으로 받아오기 위해 `iter_content` 함수를 사용
for chunk in response.iter_content(chunk_size=8192):
# 받아온 데이터를 처리하는 로직 작성
process_chunk(chunk)
위의 코드에서 stream=True
옵션을 사용하여 스트리밍 응답 요청을 지정하고, iter_content
함수를 사용하여 응답을 조각조각으로 받아옵니다. chunk_size
매개변수를 사용하여 데이터를 얼마씩 읽어올지 설정할 수 있습니다.
이제, 받아온 데이터를 처리하는 로직을 process_chunk
함수에 작성하면 됩니다. 예를 들어, 파일 다운로드를 진행한다면 chunk
데이터를 파일에 쓰는 등의 작업을 수행하면 됩니다.
스트리밍 응답 저장하기
스트리밍 응답을 받아와서 그대로 저장하려면 response
객체의 iter_content
함수 대신 iter_lines
함수를 사용할 수 있습니다. 이 함수를 사용하면 줄 단위로 응답을 받아올 수 있습니다. 다음은 스트리밍 응답을 파일로 저장하는 예제입니다:
import requests
url = 'http://example.com/streaming-data' # 스트리밍 데이터를 가져올 URL
output_file = 'output.txt' # 스트리밍 데이터를 저장할 파일 이름
response = requests.get(url, stream=True) # 스트리밍 응답 요청
with open(output_file, 'wb') as f:
# 응답을 줄 단위로 받아와 파일에 저장
for line in response.iter_lines():
if line:
f.write(line + b'\n')
위의 코드에서는 iter_lines
함수를 사용하여 응답을 줄 단위로 받아오고, open
함수를 사용하여 파일을 열고 스트리밍 데이터를 저장합니다.
마무리
requests
모듈을 사용하면 파이썬에서 간단하게 스트리밍 응답을 다룰 수 있습니다. 이렇게 처리한 데이터를 파일에 저장하거나 필요한 로직에 맞게 처리하여 활용할 수 있습니다. 스트리밍 응답을 다루는 이러한 기능은 실시간 데이터 처리나 대용량 파일 다운로드 등 다양한 상황에서 유용하게 활용될 수 있습니다.