o
    MhúRÚ  ã                   @   sX   d dl mZmZ d dlmZ d dlmZ d dlmZ ddl	m
Z
mZ G dd„ deƒZd	S )
é    )Úabsolute_importÚunicode_literals)Úcurrent_app)ÚBaseDictBackend)Úmaybe_timedeltaé   )ÚTaskMetaÚTaskSetMetac                   @   sd   e Zd ZdZeZeZej	j
ZdZdZ	ddd„Zdd„ Zd	d
„ Zdd„ Zdd„ Zdd„ Zdd„ ZdS )ÚDatabaseBackendzIThe database backend.

    Using Django models to store task state.

    Tg      à?Nc                 C   s"   | j jj|||||  |¡d� |S )z2Store return value and status of an executed task.)Ú	tracebackÚchildren)Ú	TaskModelÚ_default_managerÚstore_resultÚcurrent_task_children)ÚselfÚtask_idÚresultÚstatusr   Úrequest© r   úL/var/www/html/env/lib/python3.10/site-packages/djcelery/backends/database.pyÚ_store_result   s
   
þzDatabaseBackend._store_resultc                 C   s   | j j ||¡ |S )z&Store the result of an executed group.)ÚTaskSetModelr   r   )r   Úgroup_idr   r   r   r   Ú_save_group!   s   zDatabaseBackend._save_groupc                 C   s   | j j |¡ ¡ S )z#Get task metadata for a task by id.)r   r   Úget_taskÚto_dict©r   r   r   r   r   Ú_get_task_meta_for&   s   z"DatabaseBackend._get_task_meta_forc                 C   s   | j j |¡}|r| ¡ S dS )z%Get group metadata for a group by id.N)r   r   Úrestore_tasksetr   )r   r   Úmetar   r   r   Ú_restore_group*   s   ÿzDatabaseBackend._restore_groupc                 C   s   | j j |¡ d S )N)r   r   Údelete_taskset)r   r   r   r   r   Ú_delete_group0   s   zDatabaseBackend._delete_groupc                 C   s4   z| j jj|d� ¡  W d S  | j jy   Y d S w )N)r   )r   r   ÚgetÚdeleteÚDoesNotExistr   r   r   r   Ú_forget3   s
   ÿzDatabaseBackend._forgetc                 C   s,   t | jƒ}| j| jfD ]}|j |¡ qdS )zDelete expired metadata.N)r   Úexpiresr   r   r   Údelete_expired)r   r)   Úmodelr   r   r   Úcleanup9   s   
ÿzDatabaseBackend.cleanup)NN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r	   r   r   ÚconfÚCELERY_TASK_RESULT_EXPIRESr)   Úcreate_django_tablesÚsubpolling_intervalr   r   r   r"   r$   r(   r,   r   r   r   r   r
   
   s    
ÿ	r
   N)Ú
__future__r   r   Úceleryr   Úcelery.backends.baser   Úcelery.utils.timeutilsr   Úmodelsr   r	   r
   r   r   r   r   Ú<module>   s    