Do not save to file every time a Game instance asks for it, but instead every 10 seconds if needed
This commit is contained in:
parent
41af88bdb1
commit
6f359abeaf
|
|
@ -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)
|
||||
|
|
|
|||
Loading…
Reference in New Issue