File: //usr/local/lib/python3.9/site-packages/celery/app/__pycache__/base.cpython-39.pyc
a
X>h|� �
@ s, d Z ddlZddlZddlZddlZddlZddlZddlZddlZddl m
Z
mZmZ ddl
m
Z
ddl
mZ ddlmZ ddlmZ ddlmZ dd lmZmZ dd
lmZ ddlmZ ddlmZ dd
lm Z ddl!m"Z" ddl#m$Z$ ddl%m&Z& ddl'm(Z(m)Z) ddl*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3 ddl4m5Z5m6Z6 ddl7m8Z8 ddl9m:Z:m;Z; ddl<m=Z= ddl>m?Z? ddl@mAZA ddlBmCZCmDZDmEZE ddlFmGZGmHZHmIZI ddlJmKZK ddlLmMZMmNZN ddlOmPZPmZmQZQ ddlRmSZSmTZTmUZU dd lVmWZW d!d"lXmYZYmZZZ d!d#l[m\Z] d!d$l^m_Z_ d!d%l`maZambZb d!d&lcmdZd d!d'lemfZfmgZgmhZhmiZimjZjmkZkmlZlmmZmmnZn ejo�r�dd(lpmqZq d)ZreKes�Ztd*hZuejv�wd+�Zxd,Zyd-d.� Zzd/d0� Z{d1d2� Z|d<d4ej}d5ej~f ee�ej�ej�eej~f ej�ej�eej~f d6�d7d8�Z�G d9d:� d:e
e?�Z�G d;d4� d4�Z�e�Z�dS )=z#Actual App instance implementation.� N)�UserDict�defaultdict�deque)�datetime)�timezone��
attrgetter)�Exit)�isoparse)�Exchange�pools)�LamportClock��oid_from)�calculate_routing_key)�register_after_fork)�cached_property)�uuid)�starpromise)� platforms�signals) �_announce_app_finalized�_deregister_app�
_register_app�_set_current_app�_task_stack�connect_on_app_finalize�get_current_app�get_current_worker_task�set_default_app)�AlwaysEagerIgnored�ImproperlyConfigured)�get_loader_cls)�PromiseProxy�maybe_evaluate)�abstract)�AttributeDictMixin)�Signal)�first�
head_from_fun�
maybe_list)�
gen_task_name�instantiate�symbol_by_name)�
get_logger)�FallbackContext�
mro_lookup)�maybe_make_awarer �to_utc� )�annotation_is_class�annotation_issubclass�get_optional_arg)�detect_quorum_queues� )�backends�builtins)�prepare)�add_autoretry_behaviour)�DEFAULT_SECURITY_DIGEST�find_deprecated_settings)�TaskRegistry) �
AppPickler�Settings�_new_key_to_old�_old_key_to_new�
_unpickle_app�_unpickle_app_v2�appstr� bugreport�detect_settings)� BaseModel)�Celeryzcelery.fixups.django:fixupZFORKED_BY_MULTIPROCESSINGz�
The environment variable {0!r} is not set,
and as such the configuration could not be loaded.
Please set this variable and make sure it points to
a valid configuration module.
Example:
{0}="proj.celeryconfig"
c C s t | j|tthtgd�S )z�Return true if app has customized method `attr`.
Note:
This is used for optimizations in cases where we know
how the default behavior works, but need to account
for someone using inheritance to override a method/property.
)�stopZmonkey_patched)r0 � __class__rJ �object�__name__)�app�attr� rQ �9/usr/local/lib/python3.9/site-packages/celery/app/base.py�app_has_customM s �rS c C s t � �| �|� S )z
Unpickle app.)r � _rgetattr)Zreverse_name�argsrQ rQ rR �_unpickle_appattrY s rV c
C sF z| � � W n4 ty@ } ztjd|dd� W Y d }~n
d }~0 0 d S )Nz!after forker raised exception: %rr8 )�exc_info)�_after_fork� Exception�logger�info)rO �excrQ rQ rR �_after_fork_cleanup_app` s r] TrJ .)rO �task_fun� task_name�strict�context�dump_kwargsc
s� zt �d�}W n. ty< } ztd�|�W Y d}~n
d}~0 0 |j� �du rPi ��du r\i ���dd� t����t� ��� �������fdd��}|S )zIWrapper to validate arguments and serialize return values using Pydantic.�pydanticzAYou need to install pydantic to use pydantic model serialization.N�mode�jsonc
s� �j | i |��}|j�� D ]^\}}�j| j}t|�}|d urJ|d urJ|}t|� �r|j|�i ����d��d�|j|<