a
    3j(                     @   s^  d dl mZ d dlZd dlmZ zd dlZW n   d dlZY n0 d dlZe d kr^e	di Z
i Zg Zdd Zdd Zd	d
 Zdd Zdd Zdd Zdd Zee_ee_G dd deZG dd deZG dd deZG dd deZddefddZdLddZdMd d!ZdNd"d#ZG d$d% d%eZd&d' Z e e_!G d(d) d)eZ"G d*d+ d+eZ#G d,d- d-eZ$G d.d/ d/eZ%G d0d1 d1e%Z&G d2d3 d3eZ'G d4d5 d5e'Z(G d6d7 d7eZ)G d8d9 d9eZ*G d:d; d;eZ+G d<d= d=eZ,G d>d? d?eZ-G d@dA dAeZ.G dBdC dCeZ/G dDdE dEeZ0G dFdG dGeZ1G dHdI dIeZ2G dJdK dKeZ3dS )O    partialN)Threadz>you have to enable the uWSGI master process to use this modulec                 C   s&   t jdkrt| tr| dS | S d S N)   r   zutf-8)sysversion_info
isinstancestrencodeval r   l/www/wwwroot/dpstar/app/297b3aabda72fedb274352021c2dd8b5_venv/lib/python3.9/site-packages/uwsgidecorators.py_encode1   s    
r   c                 C   s&   t jdkrt| tr| dS | S d S r   )r   r   r	   bytesdecoder   r   r   r   _decode1   s    
r   c                 C   s   t dd |  D S )Nc                 s   s"   | ]\}}t |t |fV  qd S N)r   .0KVr   r   r   	<genexpr>%       z%_encode_to_spooler.<locals>.<genexpr>dictitemsvarsr   r   r   _encode_to_spooler$   s    r    c                 C   s   t dd |  D S )Nc                 s   s"   | ]\}}t |t |fV  qd S r   r   r   r   r   r   r   )   r   z'_decode_from_spooler.<locals>.<genexpr>r   r   r   r   r   _decode_from_spooler(   s    r"   c                  C   s.   t ddD ]} t| s
|   S q
tdd S )Nr      zNo free uwsgi signal available)rangeuwsgiZsignal_registered	Exception)signumr   r   r   get_free_signal,   s    

r(   c                 C   s   t dd |  D } d| v r<dD ]}t| || |< q"t| } t| d  }d| v rp|| d i | d }n|| }t| d|S )Nc                 s   s   | ]\}}t ||fV  qd S r   r!   r   r   r   r   r   7   r   z'manage_spool_request.<locals>.<genexpr>argsr)   kwargsud_spool_funcr+   ud_spool_ret)	r   r   pickleloadspopr"   spooler_functionsintget)r   kfretr   r   r   manage_spool_request4   s    r7   c                  C   s   t D ]
} |   qd S r   )postfork_chainr5   r   r   r   postfork_chain_hookG   s    r:   c                   @   s   e Zd Zdd Zdd ZdS )postforkc                 C   s0   t |rd| _|| _nd | _|| _t|  d S Nr   )callablewidr5   r8   appendselfr5   r   r   r   __init__P   s    zpostfork.__init__c                 O   s8   | j r*| jdkr"| jt kr"d S |   S |d | _ d S r<   )r5   r>   r%   Z	worker_idrA   r)   r+   r   r   r   __call__X   s
    zpostfork.__call__N__name__
__module____qualname__rB   rD   r   r   r   r   r;   O   s   r;   c                   @   s$   e Zd Zdd Zdd Zdd ZdS )	_spoolrawc                 O   s   | j  }| js:t|dkr*||d  |r|| nPi }dD ] }||v rB||||i qB|| |t|t|d t	t
|S )Nr   )Zmessage_dictspoolerpriorityatbodyr*   )	base_dictcopypass_argumentslenupdater0   r.   dumpsr%   spoolr    )rA   r)   r+   	argumentsZspooler_argskeyr   r   r   rD   b   s    

z_spoolraw.__call__c                 O   s   | j j| g|R i |S r   )	__class__rD   rC   r   r   r   rT   t   s    z_spoolraw.spoolc                 C   sP   dt jvrtd| jj || _| jt| jj< | j| j_|| _	d| jji| _
d S )NrJ   z9you have to enable the uWSGI spooler to use @%s decoratorr,   )r%   optr&   rW   rF   r5   r1   rD   rT   rP   rN   )rA   r5   rP   r   r   r   rB   w   s    


z_spoolraw.__init__N)rF   rG   rH   rD   rT   rB   r   r   r   r   rI   `   s   rI   c                   @   s   e Zd Zdd ZdS )_spoolc                 O   s(   t tj| jd< tj| g|R i |S Nr-   )r
   r%   ZSPOOL_OKrN   rI   rD   rC   r   r   r   rD      s    z_spool.__call__NrF   rG   rH   rD   r   r   r   r   rY      s   rY   c                   @   s   e Zd Zdd ZdS )_spoolforeverc                 O   s(   t tj| jd< tj| g|R i |S rZ   )r
   r%   ZSPOOL_RETRYrN   rI   rD   rC   r   r   r   rD      s    z_spoolforever.__call__Nr[   r   r   r   r   r\      s   r\   Fc                 C   s   | st ||dS || |S )N)rP   r   )r5   rP   _classr   r   r   spool_decorate   s    r^   c                 C   s
   t | |S r   )r^   r5   rP   r   r   r   spoolraw   s    r`   c                 C   s   t | |tS r   )r^   rY   r_   r   r   r   rT      s    rT   c                 C   s   t | |tS r   )r^   r\   r_   r   r   r   spoolforever   s    ra   c                   @   s$   e Zd Zdd Zdd Zdd ZdS )mulefuncc                 C   s2   t |r"|j| _d| _|t|j< n|| _d | _d S r<   )r=   rF   fnamemulemule_functionsr@   r   r   r   rB      s    zmulefunc.__init__c              	   O   s$   t td| j||d| j d S )Nuwsgi_mulefunc)servicefuncr)   r+   )r%   Zmule_msgr.   rS   rc   rd   rC   r   r   r   	real_call   s    zmulefunc.real_callc                 O   s6   | j s&|d j| _ |d t| j < | jS | j|i |S r<   )rc   rF   re   ri   rC   r   r   r   rD      s
    zmulefunc.__call__NrF   rG   rH   rB   ri   rD   r   r   r   r   rb      s   	
rb   c                 C   s8   t | }|d dkr4t|d  |d i |d S d S )Nrg   rf   rh   r)   r+   )r.   r/   re   )messagemsgr   r   r   mule_msg_dispatcher   s    
rm   c                   @   s   e Zd Zdd Zdd ZdS )rpcc                 C   s
   || _ d S r   namerA   rp   r   r   r   rB      s    zrpc.__init__c                 C   s   t | j| |S r   )r%   Zregister_rpcrp   r@   r   r   r   rD      s    zrpc.__call__NrE   r   r   r   r   rn      s   rn   c                   @   s   e Zd Zdd Zdd ZdS )	farm_loopc                 C   s   || _ || _d S r   )r5   farm)rA   r5   rs   r   r   r   rB      s    zfarm_loop.__init__c                 C   s<   t  dkrd S t | js d S t  }|r | | q d S r<   )r%   mule_idZin_farmrs   Zfarm_get_msgr5   rA   rk   r   r   r   rD      s    zfarm_loop.__call__NrE   r   r   r   r   rr      s   rr   c                   @   s   e Zd ZdddZdd ZdS )rs   Nc                 K   s
   || _ d S r   ro   )rA   rp   r+   r   r   r   rB      s    zfarm.__init__c                 C   s   t t|| j d S r   )r8   r?   rr   rp   r@   r   r   r   rD      s    zfarm.__call__)NrE   r   r   r   r   rs      s   
rs   c                   @   s   e Zd Zdd Zdd ZdS )
mule_brainc                 C   s   || _ || _d S r   r5   numrA   r5   rx   r   r   r   rB      s    zmule_brain.__init__c              	   C   sX   t  | jkrTz|   W n8   t }t|d |d |d  td Y n0 d S Nr         r%   rt   rx   r5   r   exc_info
excepthookexitrA   excr   r   r   rD      s    zmule_brain.__call__NrE   r   r   r   r   rv      s   rv   c                   @   s   e Zd Zdd ZdS )mule_brainloopc              	   C   sZ   t  | jkrVz|   W q   t }t|d |d |d  td Y q0 qd S rz   r}   r   r   r   r   rD      s    zmule_brainloop.__call__Nr[   r   r   r   r   r      s   r   c                   @   s   e Zd Zdd Zdd ZdS )rd   c                 C   s
   || _ d S r   rx   rA   rx   r   r   r   rB     s    zmule.__init__c                 C   s   t t|| j d S r   )r8   r?   rv   rx   r@   r   r   r   rD     s    zmule.__call__NrE   r   r   r   r   rd   
  s   rd   c                   @   s   e Zd Zdd ZdS )muleloopc                 C   s   t t|| j d S r   )r8   r?   r   rx   r@   r   r   r   rD     s    zmuleloop.__call__Nr[   r   r   r   r   r     s   r   c                   @   s   e Zd Zdd Zdd ZdS )mulemsg_loopc                 C   s   || _ || _d S r   rw   ry   r   r   r   rB     s    zmulemsg_loop.__init__c                 C   s*   t  | jkr&t  }|r| | qd S r   )r%   rt   rx   Zmule_get_msgr5   ru   r   r   r   rD     s    zmulemsg_loop.__call__NrE   r   r   r   r   r     s   r   c                   @   s   e Zd Zdd Zdd ZdS )mulemsgc                 C   s
   || _ d S r   r   r   r   r   r   rB   &  s    zmulemsg.__init__c                 C   s   t t|| j d S r   )r8   r?   r   rx   r@   r   r   r   rD   )  s    zmulemsg.__call__NrE   r   r   r   r   r   %  s   r   c                   @   s   e Zd Zdd Zdd ZdS )signalc                 K   s   || _ |dd| _d S )Ntarget )rx   r3   r   )rA   rx   r+   r   r   r   rB   /  s    zsignal.__init__c                 C   s   t | j| j| |S r   )r%   register_signalrx   r   r@   r   r   r   rD   3  s    zsignal.__call__NrE   r   r   r   r   r   -  s   r   c                   @   s   e Zd Zdd Zdd ZdS )timerc                 K   s(   | dt | _|| _| dd| _d S Nr'   r   r   r3   r(   rx   secsr   rA   r   r+   r   r   r   rB   :  s    ztimer.__init__c                 C   s&   t | j| j| t | j| j |S r   )r%   r   rx   r   Z	add_timerr   r@   r   r   r   rD   ?  s    ztimer.__call__NrE   r   r   r   r   r   8  s   r   c                   @   s   e Zd Zdd Zdd ZdS )cronc                 K   s@   | dt | _|| _|| _|| _|| _|| _| dd| _d S r   )	r3   r(   rx   minutehourdaymonthdayweekr   )rA   r   r   r   r   r   r+   r   r   r   rB   G  s    zcron.__init__c                 C   s6   t | j| j| t | j| j| j| j| j| j	 |S r   )
r%   r   rx   r   Zadd_cronr   r   r   r   r   r@   r   r   r   rD   P  s
    zcron.__call__NrE   r   r   r   r   r   E  s   	r   c                   @   s   e Zd Zdd Zdd ZdS )rbtimerc                 K   s(   | dt | _|| _| dd| _d S r   r   r   r   r   r   rB   Y  s    zrbtimer.__init__c                 C   s&   t | j| j| t | j| j |S r   )r%   r   rx   r   Zadd_rb_timerr   r@   r   r   r   rD   ^  s    zrbtimer.__call__NrE   r   r   r   r   r   W  s   r   c                   @   s   e Zd Zdd Zdd ZdS )filemonc                 K   s(   | dt | _|| _| dd| _d S r   )r3   r(   rx   fsobjr   )rA   r   r+   r   r   r   rB   f  s    zfilemon.__init__c                 C   s&   t | j| j| t | j| j |S r   )r%   r   rx   r   Zadd_file_monitorr   r@   r   r   r   rD   k  s    zfilemon.__call__NrE   r   r   r   r   r   d  s   r   c                   @   s   e Zd Zdd Zdd ZdS )erlangc                 C   s
   || _ d S r   ro   rq   r   r   r   rB   s  s    zerlang.__init__c                 C   s   t | j| |S r   )r%   Zerlang_register_processrp   r@   r   r   r   rD   v  s    zerlang.__call__NrE   r   r   r   r   r   q  s   r   c                   @   s   e Zd Zdd Zdd ZdS )lockc                 C   s
   || _ d S r   r9   r@   r   r   r   rB   |  s    zlock.__init__c                 O   s>   t  rd S t   z| j|i |W t   S t   0 d S r   )r%   Zi_am_the_spoolerr   r5   unlockrC   r   r   r   rD     s    zlock.__call__NrE   r   r   r   r   r   {  s   r   c                   @   s   e Zd Zdd Zdd ZdS )threadc                 C   s
   || _ d S r   r9   r@   r   r   r   rB     s    zthread.__init__c                 G   s"   t | j|d}d|_|  | jS )N)r   r)   T)r   r5   daemonstart)rA   r)   tr   r   r   rD     s    zthread.__call__NrE   r   r   r   r   r     s   r   c                   @   s$   e Zd Zdd Zdd Zdd ZdS )harakiric                 C   s
   || _ d S r   )s)rA   secondsr   r   r   rB     s    zharakiri.__init__c                 O   s*   t | j | j|i |}t d |S r<   )r%   Zset_user_harakirir   r5   )rA   r)   r+   rr   r   r   ri     s    
zharakiri.real_callc                 C   s   || _ | jS r   )r5   ri   r@   r   r   r   rD     s    zharakiri.__call__Nrj   r   r   r   r   r     s   r   )NF)NF)NF)4	functoolsr   r   	threadingr   cPickler.   r%   Z	masterpidr&   r1   re   r8   r   r   r    r"   r(   r7   r:   rJ   Zpost_fork_hookobjectr;   rI   rY   r\   r^   r`   rT   ra   rb   rm   Zmule_msg_hookrn   rr   rs   rv   r   rd   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   <module>   sh   #



	
