How to reconnect in requests to continue a download How to reconnect in requests to continue a download tkinter tkinter

How to reconnect in requests to continue a download


There is no inbuilt function to do that so you will have to Manually do that .

First thing you need to do is keep record of how many chunks/buffers you have written to file.

Before download function declare some variable, say x=0. (To count how much data is written to file)

then inside the download function check if x == 0.If true then download normally,Else : resume download using range header

Read Following examples for range header :- source

If the web server supports the range request then you can add the Range header to your request:

    Range: bytes=StartPos-StopPos

You will receive the part between StartPos and StopPos. If dont know the StopPos just use:

    Range: bytes=StartPos-

So your code would be:

    def resume_download(fileurl, resume_byte_position):        resume_header = {'Range': 'bytes=%d-' % resume_byte_position}        return requests.get(fileurl, headers=resume_header, stream=True,  verify=False, allow_redirects=True)

Another example :-https://www.oreilly.com/library/view/python-cookbook/0596001673/ch11s06.html

Also update the variable x after writing each chunk (x = x + chunk_size)

And in the end of your download part, add a "if" statement to check if the file size of downloaded file is same as the file size of file on server (you can get that by requests.header.get('Content-Length'). If file size is not same then you call your download function again.