U
    cc                     @   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   M/var/www/html/project/venv/lib/python3.8/site-packages/celery/app/builtins.pybackend_cleanup   s    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 k	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 kr| j }|}|| fdd|D d}
|
jrB|
jn|
j}z|
 }W n2 tk
r } z| j|||dW 5 d }~X Y nX |s| j||d|d}z&  |jjdd}W 5 Q R X W n tk
rR } zfz"t	|

 }d|j d	|}W n tk
r    t|}Y nX td
|| j|| W 5 d }~X Y n^X z|| W nL tk
r } z,td
|| jj|d|d W 5 d }~X Y nX d S )Nc                    s   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!   Zsupports_native_joinZjoin_nativejoinready	ExceptionretryconfZresult_chord_join_timeoutnextZ_failed_join_reportidStopIterationreprlogger	exceptionr
   Zchord_error_from_stackdelay)r   group_idcallbackintervalr    resultResultGroupResultr   r   depsjr,   r'   retZculpritreasonr   r   r   r   r   r   unlock_chord/   sT    
  $z+add_unlock_chord_task.<locals>.unlock_chord)celery.canvasr   Zcelery.exceptionsr   celery.resultr   r   r   r/   Zresult_chord_retry_intervalZAsyncResultr<   )r   r   rC   r   rA   r   add_unlock_chord_task$   s"    
     2rF   c                    s.   ddl m  jdddd fdd}|S )Nr   	signaturez
celery.mapFr   c                    s     dj   fdd|D S )Nr   c                    s   g | ]} |qS r   r   r$   itemr   r   r   r&   m   s     z.add_map_task.<locals>.xmap.<locals>.<listcomp>typer   itr   rH   r   r   xmapj   s    zadd_map_task.<locals>.xmaprD   rH   r   )r   rP   r   rO   r   add_map_taskf   s    rR   c                    s.   ddl m  jdddd fdd}|S )Nr   rG   zcelery.starmapFr   c                    s     dj   fdd|D S )Nr   c                    s   g | ]} | qS r   r   rI   r   r   r   r&   x   s     z6add_starmap_task.<locals>.xstarmap.<locals>.<listcomp>rK   rM   rO   r   r   xstarmapu   s    z"add_starmap_task.<locals>.xstarmaprQ   )r   rS   r   rO   r   add_starmap_taskq   s    rT   c                    s,   ddl m  | jdddd fdd}|S )Nr   )chunkszcelery.chunksFr   c                    s     | ||S r	   )Zapply_chunks)r   rN   n_chunksr   r   rU      s    zadd_chunk_task.<locals>.chunks)rD   rU   r   )r   rU   r   rW   r   add_chunk_task|   s    rY   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   rB   zcelery.groupTF)r   r   r   r   c              	      sn   | j  | } fddt|D }  fdd|D  W 5 Q R X  j}|rj|rj|| |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)r7   produceradd_to_parent)Zapply_async)r$   Zstask)r7   r_   r   r   r&      s   z1add_group_task.<locals>.group.<locals>.<listcomp>)r   	enumerateZproducer_or_acquireZcurrent_worker_taskZ	add_trail)r   tasksr:   r7   r]   r`   Ztaskitparentr   r   )r   r7   r]   r_   r   group   s    


zadd_group_task.<locals>.group)T)rD   r   rE   r   r   )r   re   r   rd   r   add_group_task   s
    rf   c                 C   s   | j dddddd }|S )rZ   zcelery.chainFr   c                  _   s   t dd S )Nzchain is not a real task)NotImplementedError)r   r   r   r   r   chain   s    zadd_chain_task.<locals>.chainr   )r   rh   r   r   r   add_chain_task   s    
ri   c                    sN   ddl m  ddl m ddlm | jddddddd fdd	}|S )rZ   r   )chord)re   r   zcelery.chordTF)r   r   r"   r   r   r   N   c                    sh   | j  t|r|jn|}	 fdd|	D | j d}| d}||}
|
j||| |||f|S )Nc                    s   g | ]}| d qS r#   r   )r$   s)r   r   r   r   r&      s    z1add_chord_task.<locals>.chord.<locals>.<listcomp>r   )r   
isinstancerb   run)r   headerbodyr]   r9   r(   r    eagerr   rb   chZ_chordre   r   r   r   rj      s    
 zadd_chord_task.<locals>.chord)r   Nrk   NF)Zceleryrj   re   rD   r   r   )r   rj   r   rs   r   add_chord_task   s    
       rt   N)__doc__Zcelery._stater   Zcelery.utils.logr   __all____name__r4   r   r   rF   rR   rT   rY   rf   ri   rt   r   r   r   r   <module>   s,   

	
A




	

