Cache Username Validations #12

Open
opened 2026-02-02 15:11:55 -05:00 by jared · 0 comments
Owner

from functools import lru_cache
from datetime import datetime, timedelta

class UsernameCache:
def init(self, ttl_minutes: int = 60):
self.cache = {}
self.ttl = timedelta(minutes=ttl_minutes)

async def is_valid(self, username: str, session: aiohttp.ClientSession) -> bool:
    # Check cache
    if username in self.cache:
        is_valid, timestamp = self.cache[username]
        if datetime.now() - timestamp < self.ttl:
            return is_valid
    
    # Fetch from API
    url = f'https://api.mojang.com/users/profiles/minecraft/{username}'
    try:
        async with session.get(url) as response:
            is_valid = response.status == 200
            self.cache[username] = (is_valid, datetime.now())
            return is_valid
    except Exception as e:
        logger.error(f"Error validating username: {e}")
        return False

username_cache = UsernameCache(ttl_minutes=60)

from functools import lru_cache from datetime import datetime, timedelta class UsernameCache: def __init__(self, ttl_minutes: int = 60): self.cache = {} self.ttl = timedelta(minutes=ttl_minutes) async def is_valid(self, username: str, session: aiohttp.ClientSession) -> bool: # Check cache if username in self.cache: is_valid, timestamp = self.cache[username] if datetime.now() - timestamp < self.ttl: return is_valid # Fetch from API url = f'https://api.mojang.com/users/profiles/minecraft/{username}' try: async with session.get(url) as response: is_valid = response.status == 200 self.cache[username] = (is_valid, datetime.now()) return is_valid except Exception as e: logger.error(f"Error validating username: {e}") return False username_cache = UsernameCache(ttl_minutes=60)
Sign in to join this conversation.
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: LotusGuild/discordBot#12