From 99da9da68af7a23e1d5d7537d310a4a7a6673cb8 Mon Sep 17 00:00:00 2001 From: Oskar Date: Thu, 11 Nov 2021 18:56:36 +0100 Subject: [PATCH] Write to FS on every POST to prevent data loss on server crash --- fs-quiz-tool-db/app.py | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) diff --git a/fs-quiz-tool-db/app.py b/fs-quiz-tool-db/app.py index 9b77035..d12c825 100644 --- a/fs-quiz-tool-db/app.py +++ b/fs-quiz-tool-db/app.py @@ -20,7 +20,9 @@ def startup(): fd = open(filename) data = json.load(fd) except FileNotFoundError: - pass + print("DB file not found, creating on POST/write.") + finally: + fd.close() @app.route('/db/', methods = ['GET']) @@ -45,20 +47,15 @@ def post(): id = generateNewKey() data[id] = request.data.decode('UTF-8') - return id, 201 - - -def dumpDB(): - - if len(data) == 0: - return - try: fd = open(filename, 'w+') - json.dump(data, fd) + json.dump(data, fd, indent=2) + except e: + print("Failed to open/create DB file for writing:", e) finally: fd.close() + return id, 201 + startup() -atexit.register(dumpDB)