ISP が 1 日に 1 回、接続を強制的に切断します。ダウンロード中にそれが発生した場合、ダウンロードは例外をスローすることなく、永久に一時停止します。
今のところ、ダウンロードをスレッド化し、最大時間を確認するか、ファイルサイズをすべて読み取ってから、まだ成長しているかどうかを確認することしか考えられませんでした。
私が今使っている機能:
def download_with_progress(url,localFileName,overwrite=False):
if not os.path.exists(localFileName) or overwrite == True:
urlretrieve(url, localFileName, reporthook=print_progress)
sys.stdout.write("\r") #remove previously printed percent sign
sys.stdout.flush()
def print_progress(count, blockSize, totalSize):
total_MB = (totalSize) / (1000 * 1000)
current_MB = (blockSize * count) / (1000 * 1000)
percent = int(count*blockSize*100/totalSize)
sys.stdout.write("\r%d%% (%d/%d MB)" % (percent, current_MB, total_MB))
sys.stdout.flush()
私はすでにここにいるので、そのように計算されているtotal_MB
か、current_MB
正しく計算されていますか? それとも で割るべき1024 * 1024
ですか?丸めた整数で表示していますので、特に問題ありません。