You can download a large file in python with requests by using the following code. In Python, memory usage is restricted regardless of the size of the downloaded file:
local_filename = url.split('/')[-1]
requests.get(url, stream=True) as r:
with open(local_filename, 'wb') as f:
for chunk in r.iter_content(chunk_size=8192):
One important point to note here that the number of bytes returned using iter_content is not exactly the chunk_size; it's expected to be a random number that is often far bigger and is expected to be different in every iteration.