From a3dae02cfbcd26fb77a11b2890e94124741cf7f3 Mon Sep 17 00:00:00 2001 From: jonaswinkler <17569239+jonaswinkler@users.noreply.github.com> Date: Sun, 13 Jun 2021 12:03:20 +0200 Subject: [PATCH] write classifier model to temporary file before copying to final location --- src/documents/classifier.py | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/documents/classifier.py b/src/documents/classifier.py index 2895c788a..36e906350 100644 --- a/src/documents/classifier.py +++ b/src/documents/classifier.py @@ -3,6 +3,7 @@ import logging import os import pickle import re +import shutil from django.conf import settings @@ -96,7 +97,10 @@ class DocumentClassifier(object): raise ClassifierModelCorruptError() def save(self): - with open(settings.MODEL_FILE, "wb") as f: + target_file = settings.MODEL_FILE + target_file_temp = settings.MODEL_FILE + ".part" + + with open(target_file_temp, "wb") as f: pickle.dump(self.FORMAT_VERSION, f) pickle.dump(self.data_hash, f) pickle.dump(self.data_vectorizer, f) @@ -107,6 +111,10 @@ class DocumentClassifier(object): pickle.dump(self.correspondent_classifier, f) pickle.dump(self.document_type_classifier, f) + if os.path.isfile(target_file): + os.unlink(target_file) + shutil.move(target_file_temp, target_file) + def train(self): data = list()