コード例 #1
0
 def getQuizWebSocketServer(self,quiz, user):
     
     # move this to db utils
     retries = 0
     quizState = None
     while(retries<5):
         try:
             quizState = ServerState.objects(quizId = quiz.quizId)
             if(quizState):
                 quizState = quizState.get(0)
                 
             if(quizState):
                 # if server is removed or renew server
                 if(not self.servers.get(quizState.serverId, None) or quizState.peopleWaiting<=0):
                     quizState.peopleWaiting = quiz.nPeople*3
                     #wait on a new server from now randomizing so to reduce the load of perticular quiz in round robin fashion
                     quizState.serverId = self.getRoundRobinServerId()
                     quizState.lastWaitingUserId = user.uid
             else:
                 quizState = ServerState()
                 quizState.quizId = quiz.quizId
                 quizState.peopleWaiting = quiz.nPeople*3
                 quizState.serverId =  self.getRoundRobinServerId()
                 quizState.lastWaitingUserId = user.uid
                 
             quizState.peopleWaiting-=1
             quizState.lastUpdatedTimestamp = datetime.datetime.now()
             quizState.save()
             break
         except:
             retries+=1
         
     return quizState.serverId , self.servers[quizState.serverId].addr
コード例 #2
0
 def waitingUserBotOrCancelled(self, quizId, sid ,uid):#corection
     quizState = ServerState.objects(quizId = quizId)
     if(quizState):
         quizState = quizState.get(0)
     if(quizState and quizState.serverId == sid and quizState.lastWaitingUserId == uid):
         quizState.peopleWaiting+=1
         quizState.save()