o
    ›¨Êh  ã                   @   s˜   d Z ddlmZ ddlmZ dZeeƒZedd„ ƒZedd„ ƒZ	ed	d
„ ƒZ
edd„ ƒZedd„ ƒZedd„ ƒZedd„ ƒZedd„ ƒZedd„ ƒZdS )zOBuilt-in Tasks.

The built-in tasks are always available in all app instances.
é    )Úconnect_on_app_finalize)Ú
get_logger© c                    s    ˆ j dddd�‡ fdd„ƒ}|S )zàTask used to clean up expired results.

    If the configured backend requires periodic cleanup this task is also
    automatically configured to run every day at 4am (requires
    :program:`celery beat` to be running).
    zcelery.backend_cleanupF©ÚnameÚsharedÚlazyc                      s   ˆ j  ¡  d S ©N)ÚbackendÚcleanupr   ©Úappr   úE/var/www/html/env/lib/python3.10/site-packages/celery/app/builtins.pyÚbackend_cleanup   ó   z1add_backend_cleanup_task.<locals>.backend_cleanup©Útask)r   r   r   r   r   Úadd_backend_cleanup_task   s   r   c                 C   s   | j ddddd�dd„ ƒ}|S )z9Task used by Task.replace when replacing task with group.Tzcelery.accumulateF)Úbindr   r   r   c                 _   s   |  d¡}|d ur|| S |S )NÚindex)Úget)ÚselfÚargsÚkwargsr   r   r   r   Ú
accumulate   s   
z'add_accumulate_task.<locals>.accumulater   )r   r   r   r   r   Úadd_accumulate_task   s   
r   c              	      sl   ddl m‰ ddlm‰  ddlm‰m} ˆjdddˆjj	dddd	�dddˆj
ˆj|f‡ ‡‡‡fd
d„	ƒ}|S )z•Task used by result backends without native chord support.

    Will joins chord by creating a task chain polling the header
    for completion.
    r   ©Úmaybe_signature)Ú
ChordError)Úallow_join_resultÚresult_from_tuplezcelery.chord_unlockNFT)r   Úmax_retriesr   Údefault_retry_delayÚignore_resultr   r   c	                    s¼  |d u r| j }ˆ|ˆƒ}||‡‡ fdd„|D ƒˆd�}
|
jr!|
jn|
j}z|
 ¡ }W n ty> } z| j|||d�‚d }~ww |sH| j||d�‚ˆ|ˆd�}zˆƒ � |ˆjjdd�}W d   ƒ n1 sew   Y  W nB ty­ } z6zt	|
 
¡ ƒ}d|j› d	|›�}W n ty‘   t|ƒ}Y nw t d
||¡ ˆj |ˆ|ƒ¡ W Y d }~d S d }~ww z| |¡ W d S  tyÝ } zt d
||¡ ˆjj|ˆd|›�ƒd� W Y d }~d S d }~ww )Nc                    ó   g | ]}ˆ|ˆ d �‘qS ©r   r   )Ú.0Úr)r   r    r   r   Ú
<listcomp><   s    z?add_unlock_chord_task.<locals>.unlock_chord.<locals>.<listcomp>r   )ÚexcÚ	countdownr!   )r*   r!   T)ÚtimeoutÚ	propagatezDependency z raised zChord %r raised: %rzCallback error: )r)   )r"   Úsupports_native_joinÚjoin_nativeÚjoinÚreadyÚ	ExceptionÚretryÚconfÚresult_chord_join_timeoutÚnextÚ_failed_join_reportÚidÚStopIterationÚreprÚloggerÚ	exceptionr
   Úchord_error_from_stackÚdelay)r   Úgroup_idÚcallbackÚintervalr!   ÚresultÚResultÚGroupResultr    r   ÚdepsÚjr0   r)   ÚretÚculpritÚreason©r   r   r   r   ©r    r   Úunlock_chord/   sb   
ýÿ€ÿþÿ€ÿ €ù	þ€þz+add_unlock_chord_task.<locals>.unlock_chord)Úcelery.canvasr   Úcelery.exceptionsr   Úcelery.resultr   r    r   r3   Úresult_chord_retry_intervalÚAsyncResultrC   )r   r    rK   r   rI   r   Úadd_unlock_chord_task$   s   
ÿý2rQ   c                    ó.   ddl m‰ ˆ jdddd�‡ ‡fdd„ƒ}|S )Nr   ©Ú	signaturez
celery.mapFr   c                    ó    ˆˆ ˆd�j ‰ ‡ fdd„|D ƒS )Nr   c                    s   g | ]}ˆ |ƒ‘qS r   r   ©r&   Úitemr   r   r   r(   m   ó    z.add_map_task.<locals>.xmap.<locals>.<listcomp>©Útype©r   Úit©r   rT   r   r   Úxmapj   ó   zadd_map_task.<locals>.xmap©rL   rT   r   )r   r^   r   r]   r   Úadd_map_taskf   ó   ra   c                    rR   )Nr   rS   zcelery.starmapFr   c                    rU   )Nr   c                    s   g | ]}ˆ |Ž ‘qS r   r   rV   r   r   r   r(   x   rX   z6add_starmap_task.<locals>.xstarmap.<locals>.<listcomp>rY   r[   r]   r   r   Úxstarmapu   r_   z"add_starmap_task.<locals>.xstarmapr`   )r   rc   r   r]   r   Úadd_starmap_taskq   rb   rd   c                    s,   ddl m‰  | jdddd�‡ fdd„ƒ}|S )Nr   )Úchunkszcelery.chunksFr   c                    s   ˆ   | ||¡S r	   )Úapply_chunks)r   r\   Ún©Ú_chunksr   r   re   €   r   zadd_chunk_task.<locals>.chunks)rL   re   r   )r   re   r   rh   r   Úadd_chunk_task|   s   rj   c                    s>   ddl m‰  ddlm‰ | jddddd�d‡ ‡fdd	„	ƒ}|S )ú5No longer used, but here for backwards compatibility.r   r   rJ   zcelery.groupTF)r   r   r   r   c                    s‚   | j ‰ ˆ|ˆ ƒ}‡ ‡‡fdd„t|ƒD ƒ}ˆ  ¡ �‰‡‡fdd„|D ƒ W d   ƒ n1 s.w   Y  ˆ j}|r?|r?| |¡ |S )Nc                 3   s&   � | ]\}}ˆ|ˆ d �  ˆ¡V  qdS )r   N)Úclone)r&   Úir   )r   r   Úpartial_argsr   r   Ú	<genexpr>‘   s   € ÿz0add_group_task.<locals>.group.<locals>.<genexpr>c                    s   g | ]
}|j ˆ ˆd d�‘qS )F)r>   ÚproducerÚadd_to_parent)Úapply_async)r&   Ústask)r>   rp   r   r   r(   ”   s
    ÿ
ÿz1add_group_task.<locals>.group.<locals>.<listcomp>)r   Ú	enumerateÚproducer_or_acquireÚcurrent_worker_taskÚ	add_trail)r   ÚtasksrA   r>   rn   rq   ÚtaskitÚparent©r   r    )r   r>   rn   rp   r   ÚgroupŒ   s   
ÿ
ÿÿ
zadd_group_task.<locals>.groupN)T)rL   r   rN   r    r   )r   r|   r   r{   r   Úadd_group_task†   s
   r}   c                 C   s   | j dddd�dd„ ƒ}|S )rk   zcelery.chainFr   c                  _   s   t dƒ‚)Nzchain is not a real task)ÚNotImplementedError)r   r   r   r   r   Úchain    s   zadd_chain_task.<locals>.chainr   )r   r   r   r   r   Úadd_chain_task�   s   
r€   c                    sR   ddl m‰  ddl m‰ ddlm‰ | jdddddd�	
	d‡ ‡‡fdd„	ƒ}|S )rk   r   )Úchord)r|   r   zcelery.chordTF)r   r   r#   r   r   r   Né   c                    sl   | j ‰ t|ˆƒr|jn|}	ˆ‡ ‡fdd„|	D ƒ| j d�}ˆ|ˆ d�}ˆ||ƒ}
|
j|||ˆ |||fi |¤ŽS )Nc                    r$   r%   r   )r&   Ús)r   r   r   r   r(   ´   s    ÿz1add_chord_task.<locals>.chord.<locals>.<listcomp>r   )r   Ú
isinstancerx   Úrun)r   ÚheaderÚbodyrn   r@   r*   r!   Úeagerr   rx   Úch©Ú_chordr|   r   r   r   r�   ­   s   ÿþ
ÿÿzadd_chord_task.<locals>.chord)r   Nr‚   NF)Úceleryr�   r|   rL   r   r   )r   r�   r   rŠ   r   Úadd_chord_task¦   s   
ÿÿr�   N)Ú__doc__Úcelery._stater   Úcelery.utils.logr   Ú__all__Ú__name__r:   r   r   rQ   ra   rd   rj   r}   r€   r�   r   r   r   r   Ú<module>   s.    

	
A




	

