in pyqldb/driver/qldb_driver.py [0:0]
def __init__(self, ledger_name, retry_config=None, read_ahead=0, executor=None, region_name=None, verify=None,
endpoint_url=None, aws_access_key_id=None, aws_secret_access_key=None, aws_session_token=None,
config=None, boto3_session=None, max_concurrent_transactions=0):
if read_ahead < 2 and read_ahead != 0:
raise ValueError('Value for read_ahead must be 0 or 2 or greater.')
self._ledger_name = ledger_name
self._read_ahead = read_ahead
self._executor = executor
self._is_closed = False
if config is not None:
if not isinstance(config, Config):
raise TypeError('config must be of type botocore.config.Config. Found: {}'
.format(type(config).__name__))
self._config = config
self._config.retries = SERVICE_RETRY
if self._config.user_agent_extra:
self._config.user_agent_extra = ' '.join([SERVICE_DESCRIPTION, self._config.user_agent_extra])
else:
self._config.user_agent_extra = SERVICE_DESCRIPTION
else:
self._config = Config(user_agent_extra=SERVICE_DESCRIPTION, retries=SERVICE_RETRY)
if retry_config is not None:
if not isinstance(retry_config, RetryConfig):
raise TypeError('config must be of type pyqldb.config.retry_config.RetryConfig. Found: {}'
.format(type(retry_config).__name__))
self._retry_config = retry_config
else:
self._retry_config = DEFAULT_RETRY_CONFIG
if boto3_session is not None:
if not isinstance(boto3_session, Session):
raise TypeError('boto3_session must be of type boto3.session.Session. Found: {}'
.format(type(boto3_session).__name__))
if region_name is not None or aws_access_key_id is not None or aws_secret_access_key is not None or \
aws_session_token is not None:
logger.warning('Custom parameters were detected while using a specified Boto3 client and will be '
'ignored. Please preconfigure the Boto3 client with those parameters instead.')
self._client = boto3_session.client(SERVICE_NAME, verify=verify, endpoint_url=endpoint_url,
config=self._config)
else:
self._client = client(SERVICE_NAME, region_name=region_name, verify=verify, endpoint_url=endpoint_url,
aws_access_key_id=aws_access_key_id, aws_secret_access_key=aws_secret_access_key,
aws_session_token=aws_session_token, config=self._config)
client_pool_limit = self._config.max_pool_connections
if max_concurrent_transactions == 0:
self._pool_limit = client_pool_limit
else:
self._pool_limit = max_concurrent_transactions
if self._pool_limit > client_pool_limit:
raise ValueError('The session pool limit given, {}, exceeds the limit set by the client, {}. Please lower '
'the limit and retry.'.format(str(self._pool_limit), str(client_pool_limit)))
self._pool_permits = BoundedSemaphore(self._pool_limit)
self._pool_permits_counter = AtomicInteger(self._pool_limit)
self._pool = Queue()
self._timeout = POOL_TIMEOUT_SECONDS