
     i                        S SK r S SKrS SKJr  S SKJr  S SKr S SKrS SKJr	  \	" \R                  5      \	" S5      :  a  \" S5      e S SKJr  S SKJr  S S	KJrJrJrJr  S SKrS S
KJr  S SKJr  S SKJr  S\R                  < S\R                  < 3r " S S\5      r " S S5      r " S S\R>                  5      r  " S S\RB                  5      r" " S S\5      r#g! \ a	    \" S5      ef = f)    N)datetime)partial)parsez24.10.1z/gevent worker requires gevent 24.10.1 or higher)Pool)StreamServer)hubmonkeysocketpywsgi)base_environ)ssl_context)AsyncWorkerzgevent/z
 gunicorn/c                   ~   ^  \ rS rSrSrSrS rU 4S jrS rS r	U 4S jr
U 4S jrU 4S	 jrU 4S
 jrU 4S jrSrU =r$ )GeventWorker    Nc           	         [         R                  " 5         / nU R                   HX  nUR                  [        R                  " UR
                  [        R                  UR                  R                  5       S95        MZ     Xl        g )N)fileno)	r	   	patch_allsocketsappendr
   FAMILYSOCK_STREAMsockdetach)selfr   ss      J/var/www/ias/venv/lib/python3.13/site-packages/gunicorn/workers/ggevent.pypatchGeventWorker.patch%   s^     ANN6==63E3E01A B      c                    > [         TU ]  5         U R                  [        R                  " 5       :w  a3  U R
                  R                  SU 5        [        R                  " S5        g g )Nz!Parent changed, shutting down: %sr   )	supernotifyppidosgetppidloginfosysexitr   	__class__s    r   r#   GeventWorker.notify/   sB    99

$HHMM=tDHHQK %r    c                 X    [         R                  " U R                  R                  S5      $ )NF)geventTimeoutcfg	keepalive)r   s    r   timeout_ctxGeventWorker.timeout_ctx5   s    ~~dhh00%88r    c           
         / n0 nU R                   R                  (       a  S[        U R                   5      0nU R                   GH  nUR	                  S5        [        U R                  5      nU R                  bd  [        U R                   5      nUR                  S[        S.5        U R                  " U4U R                  X@R                  U R                  US.UD6nOE[        U R                  U5      n[!        U4XtS.UD6nU R                   R"                  S:  a  SUl        UR'                  5         UR)                  U5        GM     U R*                  (       a9  U R-                  5         [.        R0                  " S5        U R*                  (       a  M9   U H  nUR3                  5         M     [4        R4                  " 5       n[4        R4                  " 5       U-
  U R                   R6                  ::  a  Sn	U H<  nUR8                  R;                  5       UR8                  R<                  :w  d  M7  U	S-  n	M>     U	(       d  g U R-                  5         [.        R0                  " S5        [4        R4                  " 5       U-
  U R                   R6                  ::  a  M  U R                  R?                  S	U R@                  5        U H  nURC                  SS
9  M     g ! [D         a     g f = f)Nr      T)zwsgi.multithreadSERVER_SOFTWARE)applicationspawnr'   handler_classenviron)handler9   g      ?r   z Worker graceful timeout (pid:%s))timeout)#r1   is_sslr   r   setblockingr   worker_connectionsserver_classr   updateVERSIONwsgir'   wsgi_handlerr   r<   r   workers
max_acceptstartr   aliver#   r/   sleepclosetimegraceful_timeoutpool
free_countsizewarningpidstop	Exception)
r   serversssl_argsr   rN   r;   serverhfunts	acceptings
             r   runGeventWorker.run8   s9   88??%{488'<=HAMM!//0D  ,&txx0(,'.   ** #'99Dhh"&"3"3W   
 t{{A.%aMMHM88##a'()F%LLNNN6") , jjKKMLL jjj	! " B))+"dhh&?&??	%F{{--/6;;3C3CC!Q	 &
 !S! ))+"dhh&?&?? HH?J!A& " 		s&   BK -K >AK >K 
K"!K"c                 H   > UR                  S5        [        TU ]	  XU5        g )Nr6   )r?   r"   r<   )r   listenerclientaddrr,   s       r   r<   GeventWorker.handlet   s!     	1x.r    c                 r   >  [         TU ]  XX45        g ! [        R                   a     g [         a     g f = fN)r"   handle_requestr/   GreenletExit
SystemExit)r   listener_namereqr   r`   r,   s        r   rd   GeventWorker.handle_requestz   s:    	G"=tB"" 	 		s    6	66c                 D   > [         R                  " [        TU ]  X5        g rc   )r/   r9   r"   handle_quitr   sigframer,   s      r   rk   GeventWorker.handle_quit        	UW(#5r    c                 D   > [         R                  " [        TU ]  X5        g rc   )r/   r9   r"   handle_usr1rl   s      r   rr   GeventWorker.handle_usr1   rp   r    c                 l   > U R                  5         [        R                  " 5         [        TU ]  5         g rc   )r   r   reinitr"   init_processr+   s    r   rv   GeventWorker.init_process   s     



r    )r   )__name__
__module____qualname____firstlineno__rA   rE   r   r#   r3   r[   r<   rd   rk   rr   rv   __static_attributes____classcell__r,   s   @r   r   r       s@    LL9:x/6
6
 r    r   c                   &    \ rS rSrSrSrSrS rSrg)GeventResponse   Nc                 (    Xl         X l        X0l        g rc   )statusheaderssent)r   r   r   clengths       r   __init__GeventResponse.__init__   s    	r    )r   r   r   )	rx   ry   rz   r{   r   r   r   r   r|    r    r   r   r      s    FGDr    r   c                   .   ^  \ rS rSrS rU 4S jrSrU =r$ )PyWSGIHandler   c                    [         R                  " U R                  5      n[         R                  " U R                  5      nX!-
  n[	        U S0 5      n[        U R                  [        5      (       a  U R                  R                  5       OU R                  n[        XTU R                  5      n[        U S5      (       a  U R                  R                  5       nO/ nU R                  R                  R!                  XgU R"                  U5        g )Nresponse_headersr   )r   fromtimestamp
time_starttime_finishgetattr
isinstancer   bytesdecoder   response_lengthhasattrr   itemsrW   r'   accessr;   )r   rH   finishresponse_timeresp_headersr   respreq_headerss           r   log_requestPyWSGIHandler.log_request   s    &&t7''(8(89t%7< *4DKK)G)G##%T[[fD4H4HI4##,,,,.KKt$,,Nr    c                 `   > [         TU ]  5       nU R                  US'   U R                  US'   U$ )Nzgunicorn.sockRAW_URI)r"   get_environr
   path)r   envr,   s     r   r   PyWSGIHandler.get_environ   s0    g!##{{OI
r    r   )rx   ry   rz   r{   r   r   r|   r}   r~   s   @r   r   r      s    O  r    r   c                       \ rS rSrSrg)PyWSGIServer   r   N)rx   ry   rz   r{   r|   r   r    r   r   r      s    r    r   c                        \ rS rSrSr\r\rSr	g)GeventPyWSGIWorker   z&The Gevent StreamServer based workers.r   N)
rx   ry   rz   r{   __doc__r   rA   r   rE   r|   r   r    r   r   r      s    ,L Lr    r   )$r%   r)   r   	functoolsr   rL   r/   packaging.versionr   parse_version__version__RuntimeErrorImportErrorgevent.poolr   gevent.serverr   r   r	   r
   r   gunicorngunicorn.http.wsgir   gunicorn.sockr   gunicorn.workers.base_asyncr   rC   r   r   WSGIHandlerr   
WSGIServerr   r   r   r    r   <module>r      s   
 
 
   N 9V''(=+CCLMM D  & . .  + % 3%+%7%79M9M
No; od	 	F&& 2	6$$ 	! !]  J
H
IIJs   C   C/