
    {kf                     h   d Z ddlZddlZddlZddlmZmZ ddlmZ ddlm	Z	m
Z
mZmZmZmZ ddlmZ ddlmZ ddlmZmZ dd	lmZmZ e
r,dd
lmZ ddlmZ ddlmZ ddlmZ ddl m!Z!  G d de          Z"dZ#dZ$de	ddfdZ%d"dZ&d#ddde'ded         fdZ( G d d          Z) G d  d!          Z*dS )$zDjango-specific customization.    N)datetimetimezone)import_module)IOTYPE_CHECKINGAnyListOptionalcastsymbol_by_name)cached_property)_statesignals)FixupWarningImproperlyConfigured)
ModuleType)Protocol)ConnectionHandler)Celery)Taskc                       e Zd ZU eed<   dS )DjangoDBModuleconnectionsN)__name__
__module____qualname__r   __annotations__     T/var/www/html/nettyfy-visnx/env/lib/python3.11/site-packages/celery/fixups/django.pyr   r      s         &&&&&&r    r   )DjangoFixupfixupzpEnvironment variable DJANGO_SETTINGS_MODULE is defined
but Django isn't installed.  Won't apply Django fix-ups!
fhreturnc                     	 t          j        |                                            d S # t          t          t
          f$ r Y d S w xY wN)osclosefilenoAttributeErrorOSError	TypeError)r$   s    r!   _maybe_close_fdr.   $   sN    
GY/   s   &* AAdjangor   c                 :    | j         dk     rt          d          d S )N)      z)Celery 5.x requires Django 1.11 or later.)VERSIONr   )r/   s    r!   _verify_django_versionr4   ,   s&    ~"#NOOO  r    DJANGO_SETTINGS_MODULEappr   envr"   c                 T   t           j                            |          }|rd| j                                        vrk	 ddl}t          |           t          |                                           S # t          $ r) t          j        t          t                               Y nw xY wdS )z;Install Django fixup if settings module environment is set.r/   r   N)r(   environget
loader_clslowerr/   r4   r"   installImportErrorwarningswarnr   ERR_NOT_INSTALLED)r6   r7   SETTINGS_MODULEr/   s       r!   r#   r#   1   s    jnnS))O .83>+?+?+A+AAA	.MMM #6***s##++---	  	; 	; 	;M,'899:::::	;
 4s   A2 20B%$B%c                       e Zd ZdZddZddZedd            Zej        dd            Zde	dd
fdZ
de	dd
fdZddedefdZdee         fdZedefd            Zd
S )r"   z"Fixup installed when using Django.r6   r   c                 l    || _         t          j        | j                                          d | _        d S r'   )r6   r   default_appset_default_worker_fixupselfr6   s     r!   __init__zDjangoFixup.__init__B   s4    %H  """<@r    r%   c                 |   t           j                            dt          j                               t          d          | _        | j        | j        j	        _        | j        j
        sd| j        _        t          j                            | j                   t          j                            | j                   | S )Nr   django.conf:settingsz%celery.contrib.django.task:DjangoTask)syspathinsertr(   getcwdr   	_settingsnowr6   loader_custom_task_cls_usedtask_clsr   import_modulesconnecton_import_modulesworker_initon_worker_initrI   s    r!   r=   zDjangoFixup.installH   s     	29;;''''(>??"hx- 	H GDH&&t'=>>>##D$7888r    DjangoWorkerFixupc                 P    | j         t          | j                  | _         | j         S r'   )rG   r\   r6   r[   s    r!   worker_fixupzDjangoFixup.worker_fixupX   s&    %!248!<!<D!!r    valueNc                     || _         d S r'   )rG   )rI   r_   s     r!   r^   zDjangoFixup.worker_fixup^   s    "r    kwargsc                 8    | j                                          d S r'   )r^   validate_modelsrI   ra   s     r!   rX   zDjangoFixup.on_import_modulesb   s    ))+++++r    c                 8    | j                                          d S r'   )r^   r=   rd   s     r!   rZ   zDjangoFixup.on_worker_initf   s    !!#####r    Futcc                 j    |rt          j        t          j                  n|                                 S r'   )r   rR   r   rf   _now)rI   rf   s     r!   rR   zDjangoFixup.nowi   s&    -0Ax|HL)))diikkAr    c                 J    ddl m} d |                                D             S )Nr   )appsc                     g | ]	}|j         
S r   )name).0configs     r!   
<listcomp>z2DjangoFixup.autodiscover_tasks.<locals>.<listcomp>n   s    AAAAAAr    )django.appsrj   get_app_configs)rI   rj   s     r!   autodiscover_taskszDjangoFixup.autodiscover_tasksl   s4    $$$$$$AA$*>*>*@*@AAAAr    c                      t          d          S )Nzdjango.utils.timezone:nowr   r[   s    r!   rh   zDjangoFixup._nowp   s    9:::r    )r6   r   )r%   r"   r%   r\   )r_   r\   r%   NF)r   r   r   __doc__rJ   r=   propertyr^   setterr   rX   rZ   boolr   rR   r	   strrr   r   rh   r   r    r!   r"   r"   ?   sG       ,,A A A A     " " " X"
 # # # #,# ,$ , , , ,$s $t $ $ $ $B Bt B B B B BBDI B B B B ;h ; ; ; _; ; ;r    c                       e Zd ZdZddZddZddZdd	Zd
eddfdZ	de
ddfdZddd
eddfdZddd
eddfdZd
eddfdZddeddfdZddZdS )r\   r   r6   r   r%   Nc                 D   || _         | j         j                            dd           | _        t	          dt          d                    | _        t          d          | _        t          d          | _	        t          d          f| _
        t          d          | _        d S )NCELERY_DB_REUSE_MAXr   z	django.dbzdjango.core.cacherL   zdjango.db.utils.InterfaceErrorzdjango.db:DatabaseError)r6   confr:   db_reuse_maxr   r   _db_cacher   rQ   interface_errorsDatabaseErrorrH   s     r!   rJ   zDjangoWorkerFixup.__init__x   s     HM--.CTJJ(-*D*DEE#$788'(>?? ;<<!
 ,,EFFr    c                 6    dd l }|                                 d S )Nr   )r/   setup)rI   r/   s     r!   django_setupzDjangoWorkerFixup.django_setup   s    r    c                     ddl m} |                                  t          j                            d          s |             d S d S )Nr   )
run_checksCELERY_SKIP_CHECKS)django.core.checksr   r   r(   r9   r:   )rI   r   s     r!   rc   z!DjangoWorkerFixup.validate_models   sV    111111z~~233 	JLLLLL	 	r    c                 v   t           j                            | j                   t           j                            | j                   t           j                            | j                   t           j                            | j	                   |                                  | 
                                 | S r'   )r   beat_embedded_initrW   close_databasetask_prerunon_task_preruntask_postrunon_task_postrunworker_process_initon_worker_process_initclose_cacher[   s    r!   r=   zDjangoWorkerFixup.install   s    "**4+>???##D$7888$$T%9:::#++D,GHHHr    ra   c                 H   t           j                            d          r|                                  | j        j                                        D ]%}|r!|j        r|                     |j                   &| 	                    d           | 
                                 d S )NFORKED_BY_MULTIPROCESSINGT)force)r(   r9   r:   rc   r   r   all
connection_maybe_close_db_fd_close_databaser   )rI   ra   cs      r!   r   z(DjangoWorkerFixup.on_worker_process_init   s     :>>566 	#  """ %))++ 	6 	6A 6Q\ 6''555 	4(((r    fdc                 H    	 t          |           d S # | j        $ r Y d S w xY wr'   )r.   r   )rI   r   s     r!   r   z$DjangoWorkerFixup._maybe_close_db_fd   s@    	B$ 	 	 	DD	s    
!!senderr   c                 ^    t          |j        dd          s|                                  dS dS )zCalled before every task.is_eagerFN)getattrrequestr   rI   r   ra   s      r!   r   z DjangoWorkerFixup.on_task_prerun   s:    v~z599 	"!!!!!	" 	"r    c                     t          |j        dd          s*|                                  |                                  d S d S )Nr   F)r   r   r   r   r   s      r!   r   z!DjangoWorkerFixup.on_task_postrun   sL    v~z599 	!!!	 	r    c                     | j         s|                                 S | j        | j         dz  k    rd| _        |                                  | xj        dz  c_        d S )N   r   r1   )r   r   _db_recyclesrd   s     r!   r   z DjangoWorkerFixup.close_database   si      	*''))) 1A 555 !D  """Qr    Fr   c                    | j         j                                        D ]h}	 |r|                                 n|                                 /# | j        $ r Y ;| j        $ r"}t          |          }d|vrd|vr Y d }~ad }~ww xY wd S )Nclosedznot connected)r   r   r   r)   close_if_unusable_or_obsoleter   r   rz   )rI   r   connexcstr_excs        r!   r   z!DjangoWorkerFixup._close_database   s    H(,,.. 	 	D
 9JJLLLL66888(   %   c((7**g/M/M	 	s   +A
B	B#B  Bc                 j    	 | j                                          d S # t          t          f$ r Y d S w xY wr'   )r   close_cachesr-   r+   r[   s    r!   r   zDjangoWorkerFixup.close_cache   sH    	K$$&&&&&>* 	 	 	DD	s    22)r6   r   r%   N)r%   Nrt   ru   )r   r   r   r   rJ   r   rc   r=   r   r   r   r   r   r   r   ry   r   r   r   r    r!   r\   r\   u   s`       L
G 
G 
G 
G         s t    ,R D    "V "s "t " " " "
f      s t     T d         r    r\   )r/   r   r%   N)r5   )+rv   r(   rM   r?   r   r   	importlibr   typingr   r   r   r	   r
   r   kombu.utils.importsr   kombu.utils.objectsr   celeryr   r   celery.exceptionsr   r   typesr   r   django.db.utilsr   celery.app.baser   celery.app.taskr   r   __all__rA   r.   r4   rz   r#   r"   r\   r   r    r!   <module>r      sA   $ $ 				 



  ' ' ' ' ' ' ' ' # # # # # # ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? . . . . . . / / / / / / " " " " " " " " @ @ @ @ @ @ @ @ 
'      111111&&&&&&$$$$$$' ' ' ' ' ' ' ' #  t    P P P P
 x c -AX    3; 3; 3; 3; 3; 3; 3; 3;lc c c c c c c c c cr    