
    tni
                        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  eej                            d	d
                    Ze                    de          Z eej                            dd                    Ze                    de          Z e            Zde	fdZ	 dde	fdZddZd ZdS )z2
    This module is used to handle HTTP requests.
    N)ClientError)FibonacciRetryRetryClient)ClientSession)RunPodLogger   )	WORKER_IDRUNPOD_WEBHOOK_POST_OUTPUTJOB_DONE_URLz$RUNPOD_POD_IDRUNPOD_WEBHOOK_POST_STREAMJOB_STREAM_URLclient_sessionc                   K   t          d          }t          | |          }|ddddd} |j        |fi |4 d	{V }|                                 d	{V  d	d	d	          d	{V  d	S # 1 d	{V swxY w Y   d	S )
z4
    Wrapper for transmitting results via POST.
       )attempts)r   retry_optionszutf-8z!application/x-www-form-urlencoded)charsetzContent-TypeT)dataheadersraise_for_statusN)r   r   posttext)r   urljob_datar   retry_clientkwargsclient_responses          ^/var/www/html/gpu-tools/venv/lib/python3.11/site-packages/runpod/serverless/modules/rp_http.py	_transmitr      sS      #A...M%]  L
 ?
 
 ! F !| //// % % % % % % %?""$$$$$$$$$% % % % % % % % % % % % % % % % % % % % % % % % % % % % % %s   A//
A9<A9Fsessionc                 :  K   	 |d         | j         d<   t          j        |d          }|rdnd}|                    d|d                   d| z   }t	          | ||           d	{V  t
                              | |d                    nx# t          $ r.}t
                              d
| |d                    Y d	}~nEd	}~wt          t          f$ r.}t
                              d| |d                    Y d	}~nd	}~ww xY w|t          k    r=|                    dd	          dk    r%t
                              d|d                    d	S d	S d	S # |t          k    r<|                    dd	          dk    r#t
                              d|d                    w w w xY w)zR
    A helper function to handle the result, either for sending or streaming.
    idzX-Request-IDF)ensure_asciitruefalsez$IDz
&isStream=Nz Failed to return job results. | z$Error while returning job result. | statusIN_PROGRESSz	Finished.)r   jsondumpsreplacer   logdebugr   error	TypeErrorRuntimeErrorr   getinfo)	r    r   joburl_templatelog_message	is_streamserialized_job_datar   errs	            r   _handle_resultr8   3   s     -*-d)'"jFFF'4FFW	""5#d)447OI7O7OO&9:::::::::		["CI.... G G G		:S::CIFFFFFFFF|$ K K K		>>>D	JJJJJJJJK L((Xt,,==HH[#d),,,,, )(== L((Xt,,==HH[#d),,,, )=sC   BB E 
D$B?:E ?D$C<7E <DE A
Fc                 J   K   t          | ||t          d|           d{V  dS )z!
    Return the job results.
    zResults sent.)r5   N)r8   r   )r    r   r2   r5   s       r   send_resultr:   S   sT       3o               c                 F   K   t          | ||t          d           d{V  dS )z(
    Return the stream job results.
    zIntermediate results sent.N)r8   r   )r    r   r2   s      r   stream_resultr=   \   sN       30L          r;   )F)__doc__r(   osaiohttpr   aiohttp_retryr   r   runpod.http_clientr   #runpod.serverless.modules.rp_loggerr   worker_stater	   strenvironr0   JOB_DONE_URL_TEMPLATEr*   r   JOB_STREAM_URL_TEMPLATEr   r+   r   r8   r:   r=    r;   r   <module>rJ      s|     				       5 5 5 5 5 5 5 5 , , , , , , < < < < < < # # # # # #JNN/@@   %,,-=yII#JNN/1ABB   )001A9MMlnn%M % % % %. QV- -- - - -@       r;   