class RuntimeBackendInit(webapp2.RequestHandler): # contains a list of all connected ClawUser objects allUsersList = [] def get(self): self.__getConnectedUsers() self.__setupSecureChannel() self.__setupClientChannel() # set shutdown hook runtime.set_shutdown_hook(self.isShuttingDown) def __setupSecureChannel(self): self.secureChannel = PubnubChanListenerFactory( gl.PUBLISH_KEY_CLAW_APP_SECURE, gl.SUBSCRIBE_KEY_CLAW_APP_SECURE, gl.SECRET_KEY_CLAW_APP_SECURE, True, 'ClawComm', self.secureCommCallback ) def __setupClientChannel(self): self.publishClient = Pubnub(gl.PUBLISH_KEY_PUBLIC, gl.SUBSCRIBE_KEY_PUBLIC, gl.SECRET_KEY_PUBLIC, False) def __getConnectedUsers(self): # Get existing claw users # Query self.allUsers = ClawUser().all() self.allUsers.order("-timestamp") self.allUsersList = self.allUsers.fetch(limit=gl.MAX_CONNECTIONS) def __updateConnectedUsers(self): for user in self.allUsersList: print user.channel def isShuttingDown(self): # logging.info('shutdown hook called, trying to kill BackgroundThread---------') self.secureChannel.destroy() return True def secureCommCallback(self, message): logging.info(message['text']) return True def testBlocking(self): while True: logging.info(self, 'instance still alive') time.sleep(2)