不要对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]
相关文章
相关标签/搜索