示例#1
0
 def _get_connection(cls) -> TableConnection:
     """
     Returns a (cached) connection
     """
     if not hasattr(cls, "Meta"):
         raise AttributeError(
             'As of v1.0 PynamoDB Models require a `Meta` class.\n'
             'Model: {}.{}\n'
             'See https://pynamodb.readthedocs.io/en/latest/release_notes.html\n'.format(
                 cls.__module__, cls.__name__,
             ),
         )
     elif not hasattr(cls.Meta, "table_name") or cls.Meta.table_name is None:
         raise AttributeError(
             'As of v1.0 PynamoDB Models must have a table_name\n'
             'Model: {}.{}\n'
             'See https://pynamodb.readthedocs.io/en/latest/release_notes.html'.format(
                 cls.__module__, cls.__name__,
             ),
         )
     if cls._connection is None:
         cls._connection = TableConnection(cls.Meta.table_name,
                                           region=cls.Meta.region,
                                           host=cls.Meta.host,
                                           connect_timeout_seconds=cls.Meta.connect_timeout_seconds,
                                           read_timeout_seconds=cls.Meta.read_timeout_seconds,
                                           max_retry_attempts=cls.Meta.max_retry_attempts,
                                           base_backoff_ms=cls.Meta.base_backoff_ms,
                                           max_pool_connections=cls.Meta.max_pool_connections,
                                           extra_headers=cls.Meta.extra_headers,
                                           aws_access_key_id=cls.Meta.aws_access_key_id,
                                           aws_secret_access_key=cls.Meta.aws_secret_access_key,
                                           aws_session_token=cls.Meta.aws_session_token)
     return cls._connection
示例#2
0
    def _get_connection(cls):
        """
        Append attributes to Metaclass if they are defined
        in The Flask-Philo-Core configuration object.
        """
        env = resolv_environment()

        setattr(cls.Meta, HOST, env.get(HOST))

        if not hasattr(cls.Meta, REGION):
            setattr(cls.Meta, REGION, env.get('AWS_REGION'))

        if not hasattr(cls.Meta, 'request_timeout_seconds'):
            setattr(cls.Meta, 'request_timeout_seconds',
                    env.get('request_timeout_seconds'))

        if not hasattr(cls.Meta, 'base_backoff_ms'):
            setattr(cls.Meta, 'base_backoff_ms', env.get('base_backoff_ms'))

        if not hasattr(cls.Meta, 'max_retry_attempts'):
            setattr(cls.Meta, 'max_retry_attempts',
                    env.get('max_retry_attempts'))

        if not hasattr(cls.Meta, 'aws_access_key_id'):
            setattr(cls.Meta, 'aws_access_key_id',
                    env.get('AWS_ACCESS_KEY_ID'))
        elif not cls.Meta.aws_access_key_id:
            setattr(cls.Meta, 'aws_access_key_id',
                    env.get('AWS_ACCESS_KEY_ID'))

        if not hasattr(cls.Meta, 'aws_secret_access_key'):
            setattr(cls.Meta, 'aws_secret_access_key',
                    env.get('AWS_SECRET_ACCESS_KEY'))

        elif not cls.Meta.aws_secret_access_key:
            setattr(cls.Meta, 'aws_secret_access_key',
                    env.get('AWS_SECRET_ACCESS_KEY'))

        if not hasattr(cls.Meta, 'session_cls'):
            setattr(cls.Meta, 'session_cls', env.get('session_cls'))

        cls._connection = TableConnection(
            cls.Meta.table_name,
            region=cls.Meta.region,
            host=cls.Meta.host,
            session_cls=cls.Meta.session_cls,
            request_timeout_seconds=cls.Meta.request_timeout_seconds,
            max_retry_attempts=cls.Meta.max_retry_attempts,
            base_backoff_ms=cls.Meta.base_backoff_ms,
            aws_access_key_id=cls.Meta.aws_access_key_id,
            aws_secret_access_key=cls.Meta.aws_secret_access_key)

        return cls._connection
示例#3
0
文件: models.py 项目: zeekay/PynamoDB
 def _get_connection(cls):
     """
     Returns a (cached) connection
     """
     if not hasattr(cls, "Meta") or cls.Meta.table_name is None:
         raise AttributeError(
             """As of v1.0 PynamoDB Models require a `Meta` class.
             See http://pynamodb.readthedocs.org/en/latest/release_notes.html"""
         )
     if cls._connection is None:
         cls._connection = TableConnection(cls.Meta.table_name,
                                           region=cls.Meta.region,
                                           host=cls.Meta.host)
     return cls._connection
示例#4
0
 def _get_connection(cls) -> TableConnection:
     """
     Returns a (cached) connection
     """
     if not hasattr(cls, "Meta"):
         raise AttributeError(
             'As of v1.0 PynamoDB Models require a `Meta` class.\n'
             'Model: {}.{}\n'
             'See https://pynamodb.readthedocs.io/en/latest/release_notes.html\n'
             .format(
                 cls.__module__,
                 cls.__name__,
             ), )
     elif not hasattr(cls.Meta,
                      "table_name") or cls.Meta.table_name is None:
         raise AttributeError(
             'As of v1.0 PynamoDB Models must have a table_name\n'
             'Model: {}.{}\n'
             'See https://pynamodb.readthedocs.io/en/latest/release_notes.html'
             .format(
                 cls.__module__,
                 cls.__name__,
             ), )
     # For now we just check that the connection exists and (in the case of model inheritance)
     # points to the same table. In the future we should update the connection if any of the attributes differ.
     if cls._connection is None or cls._connection.table_name != cls.Meta.table_name:
         cls._connection = TableConnection(
             cls.Meta.table_name,
             region=cls.Meta.region,
             host=cls.Meta.host,
             connect_timeout_seconds=cls.Meta.connect_timeout_seconds,
             read_timeout_seconds=cls.Meta.read_timeout_seconds,
             max_retry_attempts=cls.Meta.max_retry_attempts,
             base_backoff_ms=cls.Meta.base_backoff_ms,
             max_pool_connections=cls.Meta.max_pool_connections,
             extra_headers=cls.Meta.extra_headers,
             aws_access_key_id=cls.Meta.aws_access_key_id,
             aws_secret_access_key=cls.Meta.aws_secret_access_key,
             aws_session_token=cls.Meta.aws_session_token)
     return cls._connection