Skip to content

Instantly share code, notes, and snippets.

@ershovio
Created September 28, 2016 12:34
Show Gist options
  • Save ershovio/4ef3a750a18bca6af706d05fc71b8c0c to your computer and use it in GitHub Desktop.
Save ershovio/4ef3a750a18bca6af706d05fc71b8c0c to your computer and use it in GitHub Desktop.
Interview task
from datetime import datetime
def generate_sid():
current_sid = 1
while True:
yield str(current_sid)
current_sid += 1
class SessionManager:
__sid_generator = generate_sid()
__sessions = {}
def createSession(self, id):
sid = next(self.__sid_generator)
current_time = datetime.now()
self.__sessions[sid] = (id, current_time)
return sid
def checkSession(self, sid: str):
session = self.__sessions.get(sid)
if session:
id, previous_time = session
current_time = datetime.now()
time_delta = current_time - previous_time
if time_delta.seconds > 600:
del self.__sessions[sid]
return None
else:
self.__sessions[sid] = (id, current_time)
return id
else:
return None
def cleanup(self):
current_time = datetime.now()
self.__sessions = {sid: (id, time)
for sid, (id, time)
in self.__sessions.items()
if (current_time - time).seconds < 601}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment