不要對md5file.read()計算md5值

最近遇到的一個問題,我使用如下代碼對備份文件計算MD5值:linux

# md5file=open("%s" % outputpath, 'rb')
# md5=hashlib.md5(md5file.read()).hexdigest()
# md5file.close()

致使了部分備份節點的guestagent被kill,發生了oom現象。spa

後來調查緣由:是由於被計算的文件大小過大,上面的代碼須要將文件所有讀到內存中才能計算MD5。當此文件過大時,會致使內存超出配額,觸發了oom。code

 

如今已經改爲老老實實的用linux命令計算MD5了:blog

md5cmd="md5sum "+ "%s" % outputpath
status, output = commands.getstatusoutput(md5cmd)
md5 = output.split()[0]
相關文章
相關標籤/搜索