Open Saviorich opened 1 year ago
I hit this issue and patched it for myself; Please steal.
import random
from random_word import RandomWords
from random_word.services.local import Local
import secrets
from json import load
class CachedLocal(Local):
valid_words = None
def get_words(self):
if self.valid_words is not None:
return self.valid_words
with open(self.source) as word_database:
self.valid_words = load(word_database)
return self.valid_words
def get_random_word(self):
valid_words = self.get_words()
return secrets.choice(list(valid_words.keys()))
class RandomWords(RandomWords):
"""Class for generating random words"""
def __init__(self):
self.service = CachedLocal()
def get_random_word(self):
return self.service.get_random_word()
I ran into an issue that when I call get_random_word() many times it is generating the words so slowly.
After some research I found that each time get_random_word() is called it loads local storage file with all the words.
I suggest to move it out from this function so local storage file will load once when class Local is loaded