o
    hS                     @   s   d dl Z 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
 d dlmZ d dlmZ d d	lmZmZ d d
lmZmZmZ d dlmZmZmZ ddlmZ e eZedZedZ G dd deZ!dS )    N)partial)iscoroutinefunction)TypeVar)async_to_sync)transaction)timezone)	ParamSpec)task_enqueuedtask_finished)ResultStatusTask
TaskResult)get_exception_tracebackget_random_idjson_normalize   )BaseTaskBackendTPc                	   @   sL   e Zd ZdZdeddfddZdeeef dej	d	ej
dee fd
dZdS )ImmediateBackendTtask_resultreturnNc              
   C   s>  t |dt  tjt| |d |j}t|j	rt
|j	n|j	}t |dt  zt |dt||ji |j W nE ty } z9t|trK t |dt  t |dt| t |dt| t |dtj tjt| |d W Y d	}~d	S d	}~ww t |dt  t |dtj tjt| |d d	S )
z[
        Execute the task for the given `TaskResult`, mutating it with the outcome
        enqueued_at)r   
started_at_return_valuefinished_at
_traceback_exception_classstatusN)object__setattr__r   nowr	   sendtypetaskr   funcr   r   argskwargsBaseException
isinstanceKeyboardInterruptr   r   FAILEDr
   	SUCCEEDED)selfr   r$   calling_task_funce r0   _/var/www/html/ndineBlogger/venv/lib/python3.10/site-packages/django_tasks/backends/immediate.py_execute_task   s6   
 zImmediateBackend._execute_taskr$   r&   r'   c                 C   s`   |  | tt |t tjd d d ||| jd	}| |dur)t	t
| j| |S | | |S )N)	r$   idr   r   r   r   r&   r'   backendF)validate_taskr   r   r   r   NEWalias_get_enqueue_on_commit_for_taskr   	on_commitr   r2   )r-   r$   r&   r'   r   r0   r0   r1   enqueueD   s"   

zImmediateBackend.enqueue)__name__
__module____qualname__supports_async_taskr   r2   r   r   r   r&   r'   r:   r0   r0   r0   r1   r      s    )
r   )"logging	functoolsr   inspectr   typingr   asgiref.syncr   	django.dbr   django.utilsr   typing_extensionsr   django_tasks.signalsr	   r
   django_tasks.taskr   r   r   django_tasks.utilsr   r   r   baser   	getLoggerr;   loggerr   r   r   r0   r0   r0   r1   <module>   s     
