From 6f359abeaff04770a78019f5f07f0eeb1533e726 Mon Sep 17 00:00:00 2001 From: Elnath Date: Mon, 14 Jun 2021 01:24:00 +0200 Subject: [PATCH] Do not save to file every time a Game instance asks for it, but instead every 10 seconds if needed --- GameFiles/GamesFile.py | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/GameFiles/GamesFile.py b/GameFiles/GamesFile.py index ee89ac3..d24326b 100644 --- a/GameFiles/GamesFile.py +++ b/GameFiles/GamesFile.py @@ -5,6 +5,7 @@ from pathlib import Path from typing import Union, Dict, Callable, Tuple import discord +from discord.ext import tasks from .Game import Game @@ -60,6 +61,8 @@ class GamesFile: # Verifying that attributes have been initialised properly assert self.file_obj is not None and self.config is not None logger.debug("Games file successfully initialised") + self.save_needed = False + self.save_if_needed.start() atexit.register(self.save_to_file) @@ -112,6 +115,15 @@ class GamesFile: self.file_obj.flush() logger.debug("Written games file to disk") + @tasks.loop(seconds = 10) + async def save_if_needed(self): + if self.save_needed: + self.save_to_file() + self.save_needed = False + + def ask_for_save(self): + self.save_needed = True + def __getitem__(self, guild: discord.Guild) -> Game: """ Get the game information for one guild @@ -120,4 +132,4 @@ class GamesFile: if guild_id_str not in self.config: self.config[guild_id_str] = Game.new_dict() self.save_to_file() - return Game(self.config[guild_id_str], self.save_to_file, guild) + return Game(self.config[guild_id_str], self.ask_for_save, guild)