Пример #1
0
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
Пример #2
0

#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:
Пример #3
0
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')