возникла необходимость подсчета контрольной суммы (SHA1) загружаемого через ФТП файла (на стороне сервера).
Если файл нормально загружается (т.е. без обрывов соединения) то хеш считается нормально.
Но… если, к примеру произошел обрыв связи -то я записываю в файл текущую контрольную сумму.
Собственно в чем вопрос: как можно продолжить подсчет контрольной суммы? т.е. к уже сохраненной контрольной сумме добавить недостающую часть (которая загрузится через какое-то время)?
вот кусок кода, который я использую для подсчета сумы:
import os
from pyftpdlib import ftpserver
import hashlib
class DTPHandler(ftpserver.DTPHandler):
def handle_read(self):
m = hashlib.sha1()
try:
chunk = self.recv(self.ac_in_buffer_size)
except socket.error:
self.handle_error()
else:
self.tot_bytes_received += len(chunk)
if not chunk:
self.transfer_finished = True
# тут запись в файл полученного значения
return
self.file_obj.write(self.data_wrapper(chunk))
m.update(chunk)