def verify_pwd_shelter(email, pwd, dynamo): user_table = Table('Shelter_Table',connection=dynamo) user_data_exist = user_table.has_item(UserID=md5(email)) if user_data_exist: user_data = user_table.get_item(UserID=md5(email)) else: return None if user_data["Password"] == md5(pwd): return user_data['UserID'] else: return None
#should be set to kill itself after a period of time while True: rs = requests.get_messages() #if idle != 0 and check >= idle: #print "Worker is shutting down" #ec2.terminate_instances(instance_ids=[inst_id]) if len(rs) > 0: check = 0 m = rs[0] job = m.get_body() if not messages.has_item(message=job): messages.put_item(data={'message': job}) fulljob = job.split(':') task = fulljob[1].split() print str(os.getpid())+" sleeping "+task[1]+" ms" try: time.sleep(int(task[1])/1000) result = fulljob[0]+':'+"success" except: result = fulljob[0]+':'+"failure" #print str(os.getpid())+" done" mreturn = Message() mreturn.set_body(result) responses.write(mreturn) requests.delete_message(m) else:
class SessionStore(SessionBase): """ Implements DynamoDB session store. """ def __init__(self, session_key=None): """ Connect to sessions table in DynamoDB """ super(SessionStore, self).__init__(session_key) dynamodb2_connection_factory() if getattr(settings, 'DYNAMODB_SESSIONS_TABLE_NAME'): self.table = Table( table_name=settings.DYNAMODB_SESSIONS_TABLE_NAME, connection=getattr(settings, 'DYNAMODB_CONNECTION', None) ) logger.info("Initialization of SessionStore.") else: logger.error("No Session table name for DynamoDB") def load(self): """ Get session data from DynamoDB, runs it through the session data de-coder (base64->dict), sets ``self.session``. :rtype: dict :returns: The de-coded session data, as a dict. """ try: item = self.table.get_item( session_key=self.session_key, consistent=getattr(settings, 'DYNAMODB_SESSIONS_ALWAYS_CONSISTENT', False) ) if not item['expire_date'] > int(time.mktime(timezone.now().timetuple())): logger.info("Session expired, creating new") raise DynamoDBItemError("Session expired") except (ItemNotFound, DynamoDBItemError, ValidationException): self.create() return {} return self.decode(item['data']) def exists(self, session_key): """ Checks to see if a session currently exists in DynamoDB. :rtype: bool :returns: ``True`` if a session with the given key exists in the DB, ``False`` if not. """ is_key_exists = self.table.has_item( session_key=session_key, consistent=getattr(settings, 'DYNAMODB_SESSIONS_ALWAYS_CONSISTENT', False) ) return is_key_exists def create(self): """ Creates a new entry in DynamoDB. This may or may not actually have anything in it. """ while True: try: self.save(must_create=True) except CreateError: logger.error("Item creation failed") continue self.modified = True self._session_cache = {} return def save(self, must_create=False): """ Saves the current session data to the database. :keyword bool must_create: If ``True``, a ``CreateError`` exception will be raised if the saving operation doesn't create a *new* entry (as opposed to possibly updating an existing entry). :raises: ``CreateError`` if ``must_create`` is ``True`` and a session with the current session key already exists. """ if must_create: self._session_key = None self._get_or_create_session_key() data = {'session_key': self._session_key, 'data': self.encode(self._get_session(no_load=must_create)), 'expire_date': int(time.mktime(self.get_expiry_date().timetuple())), 'created': int(time.time())} if must_create: try: self.table.put_item(data=data) logger.info("Item created successfully") except CreateError: logger.error("Item creation failed") else: if self.exists(self._session_key): item = self.table.get_item(session_key=self._session_key, consistent=getattr(settings, 'DYNAMODB_SESSIONS_ALWAYS_CONSISTENT', False)) item['data'] = data['data'] item.partial_save() else: self.table.put_item(data=data) def delete(self, session_key=None): """ Deletes the current session, or the one specified in ``session_key``. :keyword str session_key: Optionally, override the session key to delete. """ if session_key is None: if self.session_key is None: return session_key = self.session_key if self.exists(session_key): item = self.table.get_item(session_key=session_key, consistent=getattr(settings, 'DYNAMODB_SESSIONS_ALWAYS_CONSISTENT', False)) item.delete() logger.info("Item deleted successfully") @classmethod def clear_expired(cls): from boto.dynamodb2.results import ResultSet dynamodb2_connection_factory() if getattr(settings, 'DYNAMODB_SESSIONS_TABLE_NAME'): table = Table(table_name=settings.DYNAMODB_SESSIONS_TABLE_NAME, connection=getattr(settings, 'DYNAMODB_CONNECTION', None)) try: for session in table.scan(expire_date__lt=int(time.mktime(timezone.now().timetuple()))): session.delete() logger.info('Expired sessions deleted successfully') except IndexError: logger.info('There is no expired sessions')
class SessionStore(SessionBase): """ Implements DynamoDB session store. """ def __init__(self, session_key=None): """ Connect to sessions table in DynamoDB """ super(SessionStore, self).__init__(session_key) dynamodb2_connection_factory() if getattr(settings, 'DYNAMODB_SESSIONS_TABLE_NAME'): self.table = Table( table_name=settings.DYNAMODB_SESSIONS_TABLE_NAME, connection=getattr(settings, 'DYNAMODB_CONNECTION', None)) logger.info("Initialization of SessionStore.") else: logger.error("No Session table name for DynamoDB") def load(self): """ Get session data from DynamoDB, runs it through the session data de-coder (base64->dict), sets ``self.session``. :rtype: dict :returns: The de-coded session data, as a dict. """ try: item = self.table.get_item( session_key=self.session_key, consistent=getattr(settings, 'DYNAMODB_SESSIONS_ALWAYS_CONSISTENT', False)) if not item['expire_date'] > int( time.mktime(timezone.now().timetuple())): logger.info("Session expired, creating new") raise DynamoDBItemError("Session expired") except (ItemNotFound, DynamoDBItemError, ValidationException): self.create() return {} return self.decode(item['data']) def exists(self, session_key): """ Checks to see if a session currently exists in DynamoDB. :rtype: bool :returns: ``True`` if a session with the given key exists in the DB, ``False`` if not. """ is_key_exists = self.table.has_item( session_key=session_key, consistent=getattr(settings, 'DYNAMODB_SESSIONS_ALWAYS_CONSISTENT', False)) return is_key_exists def create(self): """ Creates a new entry in DynamoDB. This may or may not actually have anything in it. """ while True: try: self.save(must_create=True) except CreateError: logger.error("Item creation failed") continue self.modified = True self._session_cache = {} return def save(self, must_create=False): """ Saves the current session data to the database. :keyword bool must_create: If ``True``, a ``CreateError`` exception will be raised if the saving operation doesn't create a *new* entry (as opposed to possibly updating an existing entry). :raises: ``CreateError`` if ``must_create`` is ``True`` and a session with the current session key already exists. """ if must_create: self._session_key = None self._get_or_create_session_key() data = { 'session_key': self._session_key, 'data': self.encode(self._get_session(no_load=must_create)), 'expire_date': int(time.mktime(self.get_expiry_date().timetuple())), 'created': int(time.time()) } if must_create: try: self.table.put_item(data=data) logger.info("Item created successfully") except CreateError: logger.error("Item creation failed") else: if self.exists(self._session_key): item = self.table.get_item( session_key=self._session_key, consistent=getattr(settings, 'DYNAMODB_SESSIONS_ALWAYS_CONSISTENT', False)) item['data'] = data['data'] item.partial_save() else: self.table.put_item(data=data) def delete(self, session_key=None): """ Deletes the current session, or the one specified in ``session_key``. :keyword str session_key: Optionally, override the session key to delete. """ if session_key is None: if self.session_key is None: return session_key = self.session_key if self.exists(session_key): item = self.table.get_item( session_key=session_key, consistent=getattr(settings, 'DYNAMODB_SESSIONS_ALWAYS_CONSISTENT', False)) item.delete() logger.info("Item deleted successfully") @classmethod def clear_expired(cls): from boto.dynamodb2.results import ResultSet dynamodb2_connection_factory() if getattr(settings, 'DYNAMODB_SESSIONS_TABLE_NAME'): table = Table(table_name=settings.DYNAMODB_SESSIONS_TABLE_NAME, connection=getattr(settings, 'DYNAMODB_CONNECTION', None)) try: for session in table.scan(expire_date__lt=int( time.mktime(timezone.now().timetuple()))): session.delete() logger.info('Expired sessions deleted successfully') except IndexError: logger.info('There is no expired sessions')