o
    Df                     @   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 )zTask 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   L/home/ubuntu/webapp/venv/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 )zTask 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




	

