Yohohohohohooho | Sanrei Aya
Sanrei Aya


Server : LiteSpeed
System : Linux barito.iixcp.rumahweb.net 5.14.0-611.49.1.el9_7.x86_64 #1 SMP PREEMPT_DYNAMIC Tue Apr 21 16:39:08 EDT 2026 x86_64
User : elvh3918 ( 1528)
PHP Version : 8.2.31
Disable Function : mail
Directory :  /usr/local/lib/python3.9/site-packages/celery/backends/__pycache__/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : //usr/local/lib/python3.9/site-packages/celery/backends/__pycache__/mongodb.cpython-39.pyc
a

��Sh�,�@sdZddlmZmZmZddlmZddlmZddlm	Z	m
Z
ddlmZddl
mZdd	lmZzdd
lZWney�d
ZYn0er�zddlmZWney�ddlmZYn0ddlmZnd
ZGd
d�de�ZdZeddg�ZGdd�de�Zd
S)zMongoDB result store backend.�)�datetime�	timedelta�timezone)�EncodeError)�cached_property)�maybe_sanitize_url�urlparse)�states)�ImproperlyConfigured�)�BaseBackendN)�Binary)�InvalidDocumentc@seZdZdS)rN)�__name__�
__module__�__qualname__�rr�A/usr/local/lib/python3.9/site-packages/celery/backends/mongodb.pyrsr)�MongoBackend�pickle�msgpackcseZdZdZdZdZdZdZdZdZ	dZ
dZdZdZ
d	ZdZd3�fd
d�	Zedd
��Zdd�Zdd�Z�fdd�Z�fdd�Zd4dd�Zdd�Zdd�Zdd�Zdd�Zd d!�Zd"d#�Zd5�fd%d&�	Zd'd(�Ze d)d*��Z!e d+d,��Z"e d-d.��Z#e d/d0��Z$d6d1d2�Z%�Z&S)7rz�MongoDB result backend.

    Raises:
        celery.exceptions.ImproperlyConfigured:
            if module :pypi:`pymongo` is not available.
    N�	localhosti�i�celeryZcelery_taskmetaZcelery_groupmeta�
Fcs�i|_t�j|fi|��ts&td��|����D]\}}|j�||�q2|jr�|�	|j�|_tj
�|j�}dd�|dD�}|d|_|d|_
||_|dr�|d|_|j�|d�|jj�d	�}|du�r�t|t�s�td
��t|�}d|vs�d|v�rd|_|�d|j�|_|�d|j�|_|�d
|j�|_|�d|j�|_|�d|j
�|_
|�d|j�|_|�d|j�|_|�d|j�|_|j�|�di��|j�|�dS)NzCYou need to install the pymongo library to use the MongoDB backend.cSs"g|]}|d�d|d���qS)r�:rr)�.0�xrrr�
<listcomp>Nsz)MongoBackend.__init__.<locals>.<listcomp>Znodelist�username�password�database�optionsZmongodb_backend_settingsz4MongoDB backend settings should be grouped in a dict�host�port�
mongo_host�user�taskmeta_collection�groupmeta_collection)r!�super�__init__�pymongor
�_prepare_client_options�items�
setdefault�url�_ensure_mongodb_uri_complianceZ
uri_parser�	parse_urir%rr$�
database_name�update�app�conf�get�
isinstance�dict�popr"r#r&r')�selfr3�kwargs�key�valueZuri_dataZ	hostslist�config��	__class__rrr):sV��




���zMongoBackend.__init__cCs2t|�}|j�d�sd|��}|dkr.|d7}|S)NZmongodbzmongodb+�
mongodb://r)r�scheme�
startswith)r.�
parsed_urlrrrr/vs
z+MongoBackend._ensure_mongodb_uri_compliancecCs$tjdkrd|jiS|jdd�SdS)N)�ZmaxPoolSizeF)�
max_pool_sizeZauto_start_request)r*Z
version_tuplerE�r9rrrr+�s


�z$MongoBackend._prepare_client_optionscCs�|jdur�ddlm}|j}|sL|j}t|t�rL|�d�sLd|�d|j��}t	|j
�}||d<|jrn|j|d<|jr~|j|d<|fi|��|_|jS)	zConnect to the MongoDB server.Nr)�MongoClientr@rr"rr)
�_connectionr*rGr$r"r6�strrBr#r7r!r%r)r9rGr"r4rrr�_get_connection�s"

�


zMongoBackend._get_connectioncs0|jdkr|St��|�}|jtvr,t|�}|S�NZbson)�
serializerr(�encode�
BINARY_CODECSr
)r9�data�payloadr>rrrM�s

zMongoBackend.encodecs|jdkr|St��|�SrK)rLr(�decode)r9rOr>rrrQ�s
zMongoBackend.decodec	
Ksn|j|�|�|||dd�}||d<z|jjd|i|dd�Wn,tyh}zt|��WYd}~n
d}~00|S)z1Store return value and state of an executed task.F)�result�state�	traceback�requestZformat_date�_idT�ZupsertN)Z_get_result_metarM�
collection�replace_onerr)	r9�task_idrRrSrTrUr:�meta�excrrr�
_store_result�s�zMongoBackend._store_resultcCs�|j�d|i�}|r�|jj�dd�r~|�|d|d|d|d|d|d|d	|d
|d|d|d
|�|d�d��S|�|d|d|�|d�|d|d
|dd��Stjdd�S)z$Get task meta-data for a task by id.rV�extendedrR�name�args�queuer:�status�worker�retries�children�	date_donerT)r_r`rZrar:rbrcrdrerfrTrR)rZrbrRrfrTreN)rbrR)	rX�find_oner3r4Zfind_value_for_keyZmeta_from_decodedrQr	�PENDING)r9rZ�objrrr�_get_task_meta_for�s4��zMongoBackend._get_task_meta_forcCs>||�dd�|D��t�tj�d�}|jjd|i|dd�|S)zSave the group result.cSsg|]
}|j�qSr)�id)r�irrrr��z,MongoBackend._save_group.<locals>.<listcomp>)rVrRrfrVTrW)rMr�nowr�utc�group_collectionrY)r9�group_idrRr[rrr�_save_group�s
�zMongoBackend._save_groupcsD�j�d|i�}|r@|d|d�fdd���|d�D�d�SdS)z!Get the result for a group by id.rVrfcsg|]}�j�|��qSr)r3ZAsyncResult)r�taskrFrrr�s�z/MongoBackend._restore_group.<locals>.<listcomp>rR)rZrfrRN)rprgrQ)r9rqrirrFr�_restore_group�s
��zMongoBackend._restore_groupcCs|j�d|i�dS)zDelete a group by id.rVN)rp�
delete_one)r9rqrrr�
_delete_group�szMongoBackend._delete_groupcCs|j�d|i�dS)z�Remove result from MongoDB.

        Raises:
            pymongo.exceptions.OperationsError:
                if the task_id could not be removed.
        rVN)rXru)r9rZrrr�_forget�s
zMongoBackend._forgetcCsN|js
dS|j�dd|j��|jii�|j�dd|j��|jii�dS)zDelete expired meta-data.Nrfz$lt)�expiresrXZdelete_manyr3rn�
expires_deltarprFrrr�cleanup	s��zMongoBackend.cleanuprcs(|sin|}t��|t||j|jd��S)N)rxr.)r(�
__reduce__r7rxr.)r9r`r:r>rrr{s�zMongoBackend.__reduce__cCs|��}||jS)N)rJr1)r9�connrrr�
_get_databaseszMongoBackend._get_databasecCs|��S)z]Get database from MongoDB connection.

        performs authentication if necessary.
        )r}rFrrrr szMongoBackend.databasecCs|j|j}|jddd�|S�z"Get the meta-data task collection.rfT)Z
background)r r&�create_index�r9rXrrrrX&szMongoBackend.collectioncCs|j|j}|jddd�|Sr~)r r'rr�rrrrp0szMongoBackend.group_collectioncCst|jd�S)N)�seconds)rrxrFrrrry:szMongoBackend.expires_deltacCsL|js
dS|r|jSd|jvr(t|j�S|j�dd�\}}d�t|�|g�S)z~Return the backend as an URI.

        Arguments:
            include_password (bool): Password censored if disabled.
        r@�,r)r.r�split�join)r9Zinclude_passwordZuri1�	remainderrrr�as_uri>s

zMongoBackend.as_uri)N)NN)rN)F)'rrr�__doc__r$r"r#r%rr1r&r'rEr!Zsupports_autoexpirerHr)�staticmethodr/r+rJrMrQr]rjrrrtrvrwrzr{r}rr rXrpryr��
__classcell__rrr>rr#sN<

�




	
	
r)r�rrrZkombu.exceptionsrZkombu.utils.objectsrZkombu.utils.urlrrrr	Zcelery.exceptionsr
�baserr*�ImportErrorZbson.binaryr
Zpymongo.binaryZpymongo.errorsr�	Exception�__all__�	frozensetrNrrrrr�<module>s,


Yohohohohohooho | Sanrei Aya