o
    Df	                     @   s8   d Z ddlmZ ddlmZmZ ddlmZ dd ZdS )zTasks auto-retry functionality.    )wraps)IgnoreRetry) get_exponential_backoff_intervalc                    s   t |dtdd t |dtdd|dtdi t|dtddt|dtdd|d	td	d
 rftdshtj fdd}j|__dS dS dS )z7Wrap task's `run` method with auto-retry functionality.autoretry_for dont_autoretry_forretry_kwargsretry_backoffFretry_backoff_maxiX  retry_jitterT	_orig_runc               
      s   z	j | i |W S  ty     ty     y      ya } z7r9tttdjjdd< tdrGt	dj
d< jdd|i}tdr[td |d }~ww )Ng      ?)factorretriesmaximumfull_jitter	countdownoverride_max_retriesmax_retriesexcr   )r   r   r   r   intmaxrequestr   hasattrgetattrr   retrydelattr)argskwargsr   retr   r   r
   r   r   r	   taskr   M/home/ubuntu/webapp/venv/lib/python3.10/site-packages/celery/app/autoretry.pyrun#   s8   


z$add_autoretry_behaviour.<locals>.runN)	tuplegetr   floatr   r   r   r#   r   )r!   optionsr#   r   r    r"   add_autoretry_behaviour   s>   



r(   N)	__doc__
vine.utilsr   celery.exceptionsr   r   celery.utils.timer   r(   r   r   r   r"   <module>   s
    