o
    ›¨Êh]j  ã                   @   sÔ  d Z ddlZddlZddlmZ 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 dd	lmZ dd
lmZmZ ddlmZ ddlmZmZmZ ddlmZ ddlmZmZmZm Z m!Z!m"Z"m#Z#m$Z$ ddl%mZ& ddl'm(Z(m)Z)m*Z* ddl+m,Z, ddl-m.Z. ddl/m0Z0 ddl1m2Z2m3Z3m4Z4 ddl5m6Z6 dZ7e8edƒZ9e,e:ƒZ;e;j<e;j=e;j>e;j?f\Z<Z=Z@Z?daAdaBdd„ ZCeCƒ  e4jDZDejEjFZGejHjFZIe6jJZJe6jKZKe6jLZMe6jNZNG dd„ dƒZOeeMeKdefdd„ZPdS ) zfTask request.

This module defines the :class:`Request` class, that specifies
how tasks are executed.
é    N)Údatetime)Ú	monotonicÚtime)Úref)ÚTERM_SIGNAME)ÚExceptionWithTraceback)Ú	safe_reprÚsafe_str)Úcached_property)Úcurrent_appÚsignals)ÚContext)Úfast_trace_taskÚ
trace_taskÚtrace_task_ret)ÚBasePool)ÚIgnoreÚInvalidTaskErrorÚRejectÚRetryÚTaskRevokedErrorÚ
TerminatedÚTimeLimitExceededÚWorkerLostError)r   )ÚmaybeÚ
maybe_listÚnoop)Ú
get_logger)Úgethostname)Úget_pickled_exception)Úmaybe_iso8601Úmaybe_make_awareÚtimezoneé   )Ústate)ÚRequestÚpypy_version_infoFc                   C   s   t  tj¡at  tj¡ad S ©N)ÚloggerÚisEnabledForÚloggingÚDEBUGÚ_does_debugÚINFOÚ
_does_info© r/   r/   úG/var/www/html/env/lib/python3.10/site-packages/celery/worker/request.pyÚ__optimize__.   s   r1   c                   @   sF  e Zd ZdZdZdZdZdZdZdZ	dZ
dZdZesdZeddddddeddddeef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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$e$j%d+d*„ ƒZ$ed,d-„ ƒZ&ed.d/„ ƒZ'ed0d1„ ƒZ(e(j%d2d1„ ƒZ(ed3d4„ ƒZ)ed5d6„ ƒZ*ed7d8„ ƒZ+ed9d:„ ƒZ,e,j%d;d:„ ƒZ,ed<d=„ ƒZ-ed>d?„ ƒZ.ed@dA„ ƒZ/e/j%dBdA„ ƒZ/edCdD„ ƒZ0e0j%dEdD„ ƒZ0edFdG„ ƒZ1edHdI„ ƒZ2edJdK„ ƒZ3edLe4fdMdN„ƒZ5edLe6fdOdP„ƒZ7edQdR„ ƒZ8dSe9fdTdU„Z:ddVdW„Z;dXdY„ Z<dˆdZd[„Z=dˆd\d]„Z>d^d_„ Z?d`da„ Z@dbdc„ ZAddde„ ZBdfdg„ ZCdhdi„ ZDdjdk„ ZEdldm„ ZFd‰dndo„ZGdpdq„ ZHdŠdrds„ZIdŠdtdu„ZJdvdw„ ZKdxdy„ ZLdzd{„ ZMeNd|d}„ ƒZOeNd~d„ ƒZPeNd€d�„ ƒZQeNd‚dƒ„ ƒZReNd„d…„ ƒZSeNd†d‡„ ƒZTdS )‹r%   zA request for task execution.FN)NN)Ú_appÚ_typeÚnameÚidÚ_root_idÚ
_parent_idÚ_on_ackÚ_bodyÚ	_hostnameÚ_eventerÚ_connection_errorsÚ_taskÚ_etaÚ_expiresÚ_request_dictÚ
_on_rejectÚ_utcÚ_content_typeÚ_content_encodingÚ	_argsreprÚ_kwargsreprÚ_argsÚ_kwargsÚ_decodedÚ	__payloadÚ__weakref__Ú__dict__Tc              
   K   sÐ  || _ |d u r|j ¡ n| ¡ | _|
d u r|jn|
| _|| _|| _|| _|r-d  | _	| _
n	|j|j| _	| _
| jr<| jn|j| _| jd | _| jd  | _| _d| jv r]| jd p[| j| _| j d¡| _| j d¡| _| j dd ¡}|rw|| _| j dd¡| _| j d	d¡| _|| _|	| _|p‘tƒ | _|| _|p™d
| _|p£| jj| j | _| j dd¡| _ | j d¡}|d urßz||ƒ}W n t!t"t#fyÖ } z
t$d|›d|› �ƒ‚d }~ww ||| j%ƒ| _&nd | _&| j d¡}|d u�rz||ƒ}W n t!t"t#f�y } z
t$d|›d|› �ƒ‚d }~ww ||| j%ƒ| _'nd | _'|j(�pi }|j)�p$i }| d¡| d¡| d¡| dd¡dœ| _*| j +|| d¡| d¡| j| j*dœ¡ | j\| jd< | jd< }| jd | _,| jd | _-d S )Nr5   ÚtaskÚshadowÚroot_idÚ	parent_idÚ	timelimitÚargsreprÚ Ú
kwargsreprr/   Úignore_resultFÚetazinvalid ETA value z: Úexpireszinvalid expires value ÚexchangeÚrouting_keyÚpriorityÚredelivered)rX   rY   rZ   r[   Úreply_toÚcorrelation_id)Ú
propertiesr\   r]   ÚhostnameÚdelivery_infoÚargsÚkwargs).Ú_messageÚheadersÚcopyr@   Úbodyr9   r2   rB   rI   rC   rD   Úcontent_typeÚcontent_encodingÚpayloadÚ_Request__payloadr5   r3   r4   Úgetr6   r7   Útime_limitsrE   rF   r8   rA   r   r:   r;   r<   Útasksr=   Ú_ignore_resultÚAttributeErrorÚ
ValueErrorÚ	TypeErrorr   Útzlocalr>   r?   r`   r^   Ú_delivery_infoÚupdaterG   rH   )ÚselfÚmessageÚon_ackr_   ÚeventerÚappÚconnection_errorsÚrequest_dictrM   Ú	on_rejectrf   rd   ÚdecodedÚutcr!   r    ÚoptsrQ   rV   ÚexcrW   r`   r^   Ú_r/   r/   r0   Ú__init__Z   s�   ÿ
ÿ

ÿ€ÿ
ÿ€ÿ
üûzRequest.__init__c                 C   ó   | j S r'   )rs   ©ru   r/   r/   r0   r`   ®   ó   zRequest.delivery_infoc                 C   rƒ   r'   )rc   r„   r/   r/   r0   rv   ²   r…   zRequest.messagec                 C   rƒ   r'   ©r@   r„   r/   r/   r0   r{   ¶   r…   zRequest.request_dictc                 C   rƒ   r'   )r9   r„   r/   r/   r0   rf   º   r…   zRequest.bodyc                 C   rƒ   r'   )r2   r„   r/   r/   r0   ry   ¾   r…   zRequest.appc                 C   rƒ   r'   )rB   r„   r/   r/   r0   r~   Â   r…   zRequest.utcc                 C   rƒ   r'   )rC   r„   r/   r/   r0   rg   Æ   r…   zRequest.content_typec                 C   rƒ   r'   )rD   r„   r/   r/   r0   rh   Ê   r…   zRequest.content_encodingc                 C   rƒ   r'   )r3   r„   r/   r/   r0   ÚtypeÎ   r…   zRequest.typec                 C   rƒ   r'   )r6   r„   r/   r/   r0   rO   Ò   r…   zRequest.root_idc                 C   rƒ   r'   )r7   r„   r/   r/   r0   rP   Ö   r…   zRequest.parent_idc                 C   rƒ   r'   )rE   r„   r/   r/   r0   rR   Ú   r…   zRequest.argsreprc                 C   rƒ   r'   )rG   r„   r/   r/   r0   ra   Þ   r…   zRequest.argsc                 C   rƒ   r'   )rH   r„   r/   r/   r0   rb   â   r…   zRequest.kwargsc                 C   rƒ   r'   )rF   r„   r/   r/   r0   rT   æ   r…   zRequest.kwargsreprc                 C   rƒ   r'   )r8   r„   r/   r/   r0   rw   ê   r…   zRequest.on_ackc                 C   rƒ   r'   ©rA   r„   r/   r/   r0   r|   î   r…   zRequest.on_rejectc                 C   ó
   || _ d S r'   rˆ   ©ru   Úvaluer/   r/   r0   r|   ò   ó   
c                 C   rƒ   r'   )r:   r„   r/   r/   r0   r_   ö   r…   zRequest.hostnamec                 C   rƒ   r'   )rn   r„   r/   r/   r0   rU   ú   r…   zRequest.ignore_resultc                 C   rƒ   r'   ©r;   r„   r/   r/   r0   rx   þ   r…   zRequest.eventerc                 C   r‰   r'   r�   )ru   rx   r/   r/   r0   rx     rŒ   c                 C   rƒ   r'   )r<   r„   r/   r/   r0   rz     r…   zRequest.connection_errorsc                 C   rƒ   r'   )r=   r„   r/   r/   r0   rM   
  r…   zRequest.taskc                 C   rƒ   r'   )r>   r„   r/   r/   r0   rV     r…   zRequest.etac                 C   rƒ   r'   ©r?   r„   r/   r/   r0   rW     r…   zRequest.expiresc                 C   r‰   r'   rŽ   rŠ   r/   r/   r0   rW     rŒ   c                 C   s   | j d u r| jjj| _ | j S r'   )Ú_tzlocalr2   Úconfr"   r„   r/   r/   r0   rr     s   
zRequest.tzlocalc                 C   s   | j j p| j jS r'   )rM   rU   Ústore_errors_even_if_ignoredr„   r/   r/   r0   Ústore_errors   s   
ÿzRequest.store_errorsc                 C   rƒ   r'   ©r5   r„   r/   r/   r0   Útask_id%  ó   zRequest.task_idc                 C   r‰   r'   r“   rŠ   r/   r/   r0   r”   *  rŒ   c                 C   rƒ   r'   ©r4   r„   r/   r/   r0   Ú	task_name.  r•   zRequest.task_namec                 C   r‰   r'   r–   rŠ   r/   r/   r0   r—   3  rŒ   c                 C   ó
   | j d S )Nr\   r†   r„   r/   r/   r0   r\   7  ó   
zRequest.reply_toc                 C   s   | j  dd¡S )NÚreplaced_task_nestingr   ©r@   rk   r„   r/   r/   r0   rš   <  ó   zRequest.replaced_task_nestingc                 C   s   | j  dg ¡S )NÚgroupsr›   r„   r/   r/   r0   r�   @  rœ   zRequest.groupsÚreturnc                 C   s   | j  d¡pg S )NÚstamped_headersr›   r„   r/   r/   r0   rŸ   D  s   zRequest.stamped_headersc                    s$   | j  d¡pi ‰ ‡ fdd„| jD ƒS )NÚstampsc                    s   i | ]}|ˆ   |¡“qS r/   )rk   )Ú.0Úheader©r    r/   r0   Ú
<dictcomp>K  s    z"Request.stamps.<locals>.<dictcomp>)r@   rk   rŸ   r„   r/   r£   r0   r    H  s   zRequest.stampsc                 C   r˜   )Nr]   r†   r„   r/   r/   r0   r]   M  r™   zRequest.correlation_idÚpoolc           	      K   sŒ   | j }| j}|  ¡ rt|ƒ‚| j\}}| jjrtnt}|j	|| j
|| j| j| j| jf| j| j| j| j|p6|j|p:|j|d�	}tt|ƒ| _|S )a  Used by the worker to send this task to the pool.

        Arguments:
            pool (~celery.concurrency.base.TaskPool): The execution pool
                used to execute this request.

        Raises:
            celery.exceptions.TaskRevokedError: if the task was revoked.
        ©ra   Úaccept_callbackÚtimeout_callbackÚcallbackÚerror_callbackÚsoft_timeoutÚtimeoutr]   )r5   r=   Úrevokedr   rl   r2   Úuse_fast_trace_taskr   r   Úapply_asyncr3   r@   r9   rC   rD   Úon_acceptedÚ
on_timeoutÚ
on_successÚ
on_failureÚsoft_time_limitÚ
time_limitr   r   Ú_apply_result)	ru   r¥   rb   r”   rM   rµ   r´   ÚtraceÚresultr/   r/   r0   Úexecute_using_poolR  s*   

ÿözRequest.execute_using_poolc              
   C   sœ   |   ¡ rdS | jjs|  ¡  | j\}}}| j}|j||ddœfi |p#i ¤Ž t| j| j| j	| j
|| j| jj| jd�\}}}}|rH| jdd� |S |  ¡  |S )zÌExecute the task in a :func:`~celery.app.trace.trace_task`.

        Arguments:
            loglevel (int): The loglevel used by the task.
            logfile (str): The logfile used by the task.
        NF)ÚloglevelÚlogfileÚis_eager)r_   Úloaderry   ©Úrequeue)r­   rM   Ú	acks_lateÚacknowledgeÚ_payloadr@   rt   r   r5   rG   rH   r:   r2   r½   Úreject)ru   rº   r»   r�   ÚembedÚrequestÚretvalÚIr/   r/   r0   Úexecutes  s,   ýü
þÿzRequest.executec                 C   s6   | j rt | j j¡}|| j krt | j¡ dS dS dS )z%If expired, mark the task as revoked.TN)rW   r   ÚnowÚtzinfoÚrevoked_tasksÚaddr5   )ru   rÉ   r/   r/   r0   Úmaybe_expire•  s   
üzRequest.maybe_expirec                 C   sn   t  |pt¡}| jr| | j|¡ |  dd|d¡ n||f| _| jd ur3|  ¡ }|d ur5| 	|¡ d S d S d S )NÚ
terminatedTF)
Ú_signalsÚsignumr   Ú
time_startÚterminate_jobÚ
worker_pidÚ_announce_revokedÚ_terminate_on_ackr¶   Ú	terminate©ru   r¥   ÚsignalÚobjr/   r/   r0   rÖ   �  s   

ýzRequest.terminatec                 C   sZ   t  |pt¡}| jr| | j|¡ |  ¡  | jd ur)|  ¡ }|d ur+| |¡ d S d S d S r'   )	rÏ   rÐ   r   rÑ   rÒ   rÓ   Ú_announce_cancelledr¶   rÖ   r×   r/   r/   r0   Úcancel©  s   
ýzRequest.cancelc                 C   sn   t | ƒ |  d¡ d}t|d�}| jjj| j|| jd� | j || j| j	| j
d ¡ d| _t| j| jd d� d S )Nztask-cancelledzcancelled by Celery)rv   )rÅ   T)rÅ   Úeinfo)Ú
task_readyÚ
send_eventr   rM   ÚbackendÚmark_as_retryr5   Ú_contextÚon_retryra   rb   Ú_already_cancelledÚ
send_retry)ru   Úreasonr€   r/   r/   r0   rÚ   ´  s   

þzRequest._announce_cancelledc                 C   s^   t | ƒ | jd|||d� | jjj| j|| j| jd� |  ¡  d| _	t
| j| j|||d� d S )Nztask-revoked)rÎ   rÐ   Úexpired©rÅ   Ústore_resultT)rÅ   rÎ   rÐ   ræ   )rÝ   rÞ   rM   rß   Úmark_as_revokedr5   rá   r’   rÁ   Ú_already_revokedÚsend_revoked)ru   rå   rÎ   rÐ   ræ   r/   r/   r0   rÔ   Á  s   ÿ
þ

ÿzRequest._announce_revokedc           
      C   s  d}| j rdS | jr|  ¡ }| jtv }d\}}|s_| jr_| jD ]?}|tv r^t| }| jjd | }t	|t
tfƒrL|D ]}|t|ƒv rJd}||i} nq:nt|t|ƒv ||kgƒ}||i} nqt|||fƒr†d}	|rp|	d| 7 }	t|	| j| jƒ |  |r~dnddd	|¡ dS dS )
z%If revoked, skip task and mark state.FT)FNr    zDiscarding revoked task: %s[%s]z (revoked by header: %s)ræ   r­   N)rê   rW   rÍ   r5   rË   rŸ   Úrevoked_stampsrc   rd   Ú
isinstanceÚlistÚtupler   ÚanyÚinfor4   rÔ   )
ru   ræ   Úrevoked_by_idÚrevoked_by_headerÚrevoking_headerÚstampÚrevoked_headerÚstamped_headerÚstamped_valueÚlog_msgr/   r/   r0   r­   Î  sJ   


ý€
þðÿzRequest.revokedc                 K   s@   | j r| j jr| jjr| j j|fd| ji|¤Ž d S d S d S d S )NÚuuid)r;   ÚenabledrM   Úsend_eventsÚsendr5   )ru   r‡   Úfieldsr/   r/   r0   rÞ   ÷  s   ÿzRequest.send_eventc                 C   sn   || _ tƒ tƒ |  | _t| ƒ | jjs|  ¡  |  d¡ t	r(t
d| j| j|ƒ | jdur5| j| jŽ  dS dS )z4Handler called when task is accepted by worker pool.ztask-startedzTask accepted: %s[%s] pid:%rN)rÓ   r   r   rÑ   Útask_acceptedrM   rÀ   rÁ   rÞ   r,   Údebugr4   r5   rÕ   rÖ   )ru   ÚpidÚtime_acceptedr/   r/   r0   r°   û  s   

ÿzRequest.on_acceptedc                 C   s|   |rt d|| j| jƒ dS t| ƒ td|| j| jƒ t|ƒ}| jjj| j|| j	| j
d� | jjr:| jjr<|  ¡  dS dS dS )z%Handler called if the task times out.z)Soft time limit (%ss) exceeded for %s[%s]z)Hard time limit (%ss) exceeded for %s[%s]rç   N)Úwarnr4   r5   rÝ   Úerrorr   rM   rß   Úmark_as_failurerá   r’   rÀ   Úacks_on_failure_or_timeoutrÁ   )ru   Úsoftr¬   r€   r/   r/   r0   r±   	  s    
ÿ
ÿ
þÿzRequest.on_timeoutc                 K   st   |\}}}|r"|j }t|tƒr|j}t|ttfƒr|‚| j|dd�S t| dd� | jj	r0|  
¡  | jd||d� dS )z6Handler called if the task was successfully processed.T©Ú	return_ok)Ú
successfulútask-succeeded©r¸   ÚruntimeN)Ú	exceptionrí   r   r€   Ú
SystemExitÚKeyboardInterruptr³   rÝ   rM   rÀ   rÁ   rÞ   ©ru   Úfailed__retval__runtimerb   ÚfailedrÆ   r  r€   r/   r/   r0   r²     s   

zRequest.on_successc                 C   s2   | j jr|  ¡  | jdt|jjƒt|jƒd� dS )z-Handler called if the task should be retried.ztask-retried©r  Ú	tracebackN)	rM   rÀ   rÁ   rÞ   r   r  r€   r	   r  )ru   Úexc_infor/   r/   r0   râ   -  s   

þzRequest.on_retryc           
   	   C   sŒ  t | ƒ |j}t|tƒr|j}t|tƒ}|r(| js&| js&|  ddt	|ƒd¡ dS t|t
ƒr4t
d|› �ƒ‚t|tƒr@| j|jd�S t|tƒrI|  ¡ S t|tƒrS|  |¡S d}t|tƒ}| jjr‚| jjoc|}| jj}	|rud}| j|d� d}n|	r||  ¡  n| jdd� |s¨|sˆ|s¨| jjj| j|| j| jd� tjj| j| j|| j| j |j!|d� |r¸| j"d	t#t$|jƒƒ|j!d
� |sÄt%d||j&d� dS dS )z/Handler called if the task raised an exception.rÎ   TFNzProcess got: r¾   rç   )Úsenderr”   r  ra   rb   r  rÜ   ztask-failedr  zTask handler raised error: %r)r  )'rÝ   r  rí   r   r€   r   rã   rê   rÔ   ÚstrÚMemoryErrorr   rÃ   r¿   r   rÁ   r   râ   r   rM   rÀ   Úreject_on_worker_lostr  rß   r  r5   rá   r’   r   Útask_failurerý   ra   rb   r  rÞ   r   r   r  r  )
ru   r  Úsend_failed_eventr	  r€   Úis_terminatedr¿   Úis_worker_lostrÃ   Úackr/   r/   r0   r³   6  sn   


ÿ





þ

þüý
ÿÿzRequest.on_failurec                 C   s"   | j s|  t| j¡ d| _ dS dS )zAcknowledge task.TN)Úacknowledgedr8   r(   r<   r„   r/   r/   r0   rÁ   †  s   
þzRequest.acknowledgec                 C   s2   | j s|  t| j|¡ d| _ | jd|d� d S d S )NTztask-rejectedr¾   )r   rA   r(   r<   rÞ   )ru   r¿   r/   r/   r0   rÃ   Œ  s
   ýzRequest.rejectc                 C   sB   | j | j|s	| jn| j|s| jn| j| j| j| j| j	| j
| jdœ
S )N)
r5   r4   ra   rb   r‡   r_   rÑ   r   r`   rÓ   )r5   r4   rG   rE   rH   rF   r3   r:   rÑ   r   r`   rÓ   )ru   Úsafer/   r/   r0   rñ   ’  s   özRequest.infoc                 C   s
   d  | ¡S )Nz{0.name}[{0.id}])Úformatr„   r/   r/   r0   Ú	humaninfo   s   
zRequest.humaninfoc                 C   s@   d  |  ¡ | jrd| j› d�nd| jrd| j› d�ndg¡ ¡ S )z``str(self)``.ú z ETA:[ú]rS   z
 expires:[)Újoinr#  r>   r?   Ústripr„   r/   r/   r0   Ú__str__£  s   ýüzRequest.__str__c                 C   s   d  t| ƒj|  ¡ | j| j¡S )z``repr(self)``.z<{}: {} {} {}>)r"  r‡   Ú__name__r#  rE   rF   r„   r/   r/   r0   Ú__repr__«  s   þzRequest.__repr__c                 C   rƒ   r'   )rj   r„   r/   r/   r0   rÂ   ²  r…   zRequest._payloadc                 C   ó   | j \}}}| d¡S )NÚchord©rÂ   rk   ©ru   r�   rÄ   r/   r/   r0   r,  ¶  ó   
zRequest.chordc                 C   r+  )NÚerrbacksr-  r.  r/   r/   r0   r0  ¿  r/  zRequest.errbacksc                 C   ó   | j  d¡S )NÚgroupr›   r„   r/   r/   r0   r2  È  s   zRequest.groupc                 C   s.   | j }| j\}}}|jdi |pi ¤Ž t|ƒS )z9Context (:class:`~celery.app.task.Context`) of this task.Nr/   )r@   rÂ   rt   r   )ru   rÅ   r�   rÄ   r/   r/   r0   rá   Î  s   zRequest._contextc                 C   r1  )NÚgroup_indexr›   r„   r/   r/   r0   r3  Ø  s   zRequest.group_indexr'   )TF)F)Ur)  Ú
__module__Ú__qualname__Ú__doc__r   rÑ   rÓ   rl   rê   rã   rÕ   r¶   r�   ÚIS_PYPYÚ	__slots__r   r!   r    r‚   Úpropertyr`   rv   r{   rf   ry   r~   rg   rh   r‡   rO   rP   rR   ra   rb   rT   rw   r|   Úsetterr_   rU   rx   rz   rM   rV   rW   rr   r’   r”   r—   r\   rš   r�   rî   rŸ   Údictr    r]   r   r¹   rÈ   rÍ   rÖ   rÛ   rÚ   rÔ   r­   rÞ   r°   r±   r²   râ   r³   rÁ   rÃ   rñ   r#  r(  r*  r
   rÂ   r,  r0  r2  rá   r3  r/   r/   r/   r0   r%   C   s   	
úT





































!"

)
	P






	r%   c
              	      s^   |j ‰|j‰|j‰|j‰ |o|j‰ˆd u r|	jrtnt‰G ‡ ‡‡‡‡‡‡‡fdd„d| ƒ}
|
S )Nc                       s0   e Zd Z‡‡‡‡‡fdd„Z‡ ‡‡fdd„ZdS )z#create_request_cls.<locals>.Requestc                    sp   | j }|  ¡ rt|ƒ‚| j\}}ˆ ˆ| j|| j| j| j| jf| j	| j
| j| j|p)ˆ|p,ˆ|d�	}tˆ|ƒ| _|S )Nr¦   )r”   r­   r   rl   r‡   r{   rf   rg   rh   r°   r±   r²   r³   r   r¶   )ru   r¥   rb   r”   rµ   r´   r¸   )r¯   Údefault_soft_time_limitÚdefault_time_limitr   r·   r/   r0   r¹   ì  s&   
ÿöz6create_request_cls.<locals>.Request.execute_using_poolc                    st   |\}}}|r"|j }t|tƒr|j}t|ttfƒr|‚| j|dd�S ˆ| ƒ ˆ r,|  ¡  ˆr8| jd||d� d S d S )NTr  r  r  )	r  rí   r   r€   r  r  r³   rÁ   rÞ   r  )rÀ   ÚeventsrÝ   r/   r0   r²     s    


ÿÿz.create_request_cls.<locals>.Request.on_successN)r)  r4  r5  r¹   r²   r/   ©rÀ   r¯   r<  r=  r>  r   rÝ   r·   r/   r0   r%   ê  s    r%   )rµ   r´   r¯   rÀ   rû   r®   r   r   )ÚbaserM   r¥   r_   rx   r   rË   rÝ   r·   ry   r%   r/   r?  r0   Úcreate_request_clsÞ  s   
",rA  )Qr6  r*   Úsysr   r   r   Úweakrefr   Úbilliard.commonr   Úbilliard.einfor   Úkombu.utils.encodingr   r	   Úkombu.utils.objectsr
   Úceleryr   r   Úcelery.app.taskr   Úcelery.app.tracer   r   r   Úcelery.concurrency.baser   Úcelery.exceptionsr   r   r   r   r   r   r   r   Úcelery.platformsrÏ   Úcelery.utils.functionalr   r   r   Úcelery.utils.logr   Úcelery.utils.nodenamesr   Úcelery.utils.serializationr   Úcelery.utils.timer    r!   r"   rS   r$   Ú__all__Úhasattrr7  r)  r(   r   rñ   Úwarningr  r  r.   r,   r1   Útz_or_localÚtask_revokedrý   rë   Ú
task_retryrä   rÿ   rÝ   r­   rË   rì   r%   rA  r/   r/   r/   r0   Ú<module>   s`    (
ÿ     !þ