Как измерить скорость загрузки и прогресс, используя запросы?

я используюrequests для загрузки файлов, но для больших файлов мне нужно каждый раз проверять размер файла на диске, потому что я могуt отображать прогресс в процентах, и я также хотел бы знать скорость загрузки. Как я могу сделать это? Вот'мой код:

import requests
import sys
import time
import os

def downloadFile(url, directory) :
  localFilename = url.split('/')[-1]
  r = requests.get(url, stream=True)

  start = time.clock()
  f = open(directory + '/' + localFilename, 'wb')
  for chunk in r.iter_content(chunk_size = 512 * 1024) :
        if chunk :
              f.write(chunk)
              f.flush()
              os.fsync(f.fileno())
  f.close()
  return (time.clock() - start)

def main() :
  if len(sys.argv) > 1 :
        url = sys.argv[1]
  else :
        url = raw_input("Enter the URL : ")
  directory = raw_input("Where would you want to save the file ?")

  time_elapsed = downloadFile(url, directory)
  print "Download complete..."
  print "Time Elapsed: " + time_elapsed


if __name__ == "__main__" :
  main()

Я думаю, что один из способов сделать это будет читать файл каждый раз вfor цикл и рассчитать процент прогресса на основе заголовкаContent-Length, Но это снова будет проблемой для больших файлов (около 500 МБ). Есть ли другой способ сделать это?

Ответы на вопрос(1)

Ваш ответ на вопрос