У меня есть этот простой скрипт на python, который загружает файл с помощью curl. Также он рассчитывает пропускную способность. Вот весь сценарий:
import pycurl
import time
next_time = 0
# Callback function invoked when download/upload has progress
def progress(download_t, download_d, upload_t, upload_d):
global next_time
if time.time() >= next_time:
print("Total to download", download_t)
print("Total downloaded", download_d)
print("Total to upload", upload_t)
print("Total uploaded", upload_d)
download_speed = (download_d / 1000000 * 8) / 10
print(" download_speed", download_speed)
next_time = time.time() + 10
c = pycurl.Curl()
c.setopt(c.URL, "https://mysample_domain.com/speed-test/test/1G.dat")
c.setopt(c.NOPROGRESS, False)
c.setopt(c.XFERINFOFUNCTION, progress)
start_time = time.time()
next_time = time.time() + 10
c.perform()
print('after download, duration = ', time.time() - start_time)
Проблема заключается в том, что при использовании процесса обратного вызова загрузка файла занимает 459 секунд. Когда я удалил эти две строки, файл был загружен за 210 секунд. Почему мои вычисления в методе прогрессируют замораживание скорости загрузки?
c.setopt(c.NOPROGRESS, False)
c.setopt(c.XFERINFOFUNCTION, progress)