File: //usr/local/lib/python3.9/site-packages/celery/backends/__pycache__/dynamodb.cpython-39.pyc
a
X>h|L � @ s� d Z ddlmZ ddlmZ ddlmZmZ ddlmZm Z ddl
mZ ddl
mZ ddlmZ d d
lmZ zddlZddlmZ W n ey� d ZZY n0 d
Zedd�Zee�ZG dd� de�ZdS )z"AWS DynamoDB result store backend.� )�
namedtuple)�
ip_address)�sleep�time)�Any�Dict)�
_parse_url)�ImproperlyConfigured)�
get_logger� )�KeyValueStoreBackendN)�ClientError)�DynamoDBBackend�DynamoDBAttribute��name� data_typec sj e Zd ZdZdZdZdZdZdZdZ dZ
eddd�Zed d
d�Z
eddd�Zed
dd�Zeddd�ZdZdZd?� fdd� Zedd� �Zd@dd�Zdd� Zdd� Zdd� Zdd� Zdd� Zdd � Zd!d"� ZdAd$d%�Zd&d'� Zd(d)� Z e!e"e!e#f d*�d+d,�Z$e!e"e!e#f d*�d-d.�Z%d/d0� Z&e'd1d2� �Z(d3d4� Z)d5d6� Z*d7d8� Z+d9d:� Z,e-e.d*�d;d<�Z/� fd=d>�Z0� Z1S )Br z�AWS DynamoDB result backend.
Raises:
celery.exceptions.ImproperlyConfigured:
if module :pypi:`boto3` is not available.
Zceleryr NT�id�Sr �result�BZchord_count�N� timestamp�ttlc
s� t � j|i |�� || _|p | j| _ts0td��d}d }d }|d u�r�t|�\}} }
}}}
}|}|}|d u}|d u}||kr�td��|}| dks�t�| �r�d| � d|
� �| _ d| _
t�d�
| j �� n| | _
| jjj}|d �}|r�|| _ t|�d
| j��| _t|�d| j��| _|�d| j�}|�rtzt|�| _W n@ t�yr } z&tjd
|� d�|d� |�W Y d }~n
d }~0 0 |
�p~| j| _| j| j| jf| _d | _|�r�| j||d� d S )NzBYou need to install the boto3 library to use the DynamoDB backend.Fz6You need to specify both the Access Key ID and Secret.� localhostzhttp://�:z us-east-1z*Using local-only DynamoDB endpoint URL: {}Zdynamodb_endpoint_url�read�writeZttl_secondszTTL must be a number; got "�")�exc_info)�
access_key_id�secret_access_key)�super�__init__�url�
table_name�boto3r � parse_urlr �_is_valid_ip�endpoint_url�
aws_region�logger�warning�formatZapp�conf�get�int�read_capacity_units�write_capacity_units�time_to_live_seconds�
ValueError�error�
_key_field�_value_field�_timestamp_field�_available_fields�_client�_get_client)�selfr$ r% �args�kwargsZaws_credentials_given�aws_access_key_id�aws_secret_access_key�schemeZregion�port�username�password�table�queryZaccess_key_givenZsecret_key_given�_getZconfig_endpoint_urlr �e�� __class__� �B/usr/local/lib/python3.9/site-packages/celery/backends/dynamodb.pyr# D s� �
����
����
���zDynamoDBBackend.__init__c C s( zt | � W dS ty" Y dS 0 d S )NTF)r r4 )�iprK rK rL r( � s
zDynamoDBBackend._is_valid_ipc C s| | j du rvd| ji}|dur,|�||d�� | jdur@| j|d<