
    df                         d dl mZ d dlZd dlmZ d dlmZ d dlmZm	Z	 	 d dl
mZ d dlmZ  G d	 d
e      Zy# e$ r d ZY w xY w)    )absolute_importN)ThreadPoolExecutor)convert_yielded)BaseExecutorrun_job)run_coroutine_job)iscoroutinefunction_partialc                      y)NF )funcs    V/home/api-vastappli/venv/lib/python3.12/site-packages/apscheduler/executors/tornado.pyr	   r	      s        c                   4     e Zd ZdZd fd	Z fdZd Z xZS )TornadoExecutorak  
    Runs jobs either in a thread pool or directly on the I/O loop.

    If the job function is a native coroutine function, it is scheduled to be run directly in the
    I/O loop as soon as possible. All other functions are run in a thread pool.

    Plugin alias: ``tornado``

    :param int max_workers: maximum number of worker threads in the thread pool
    c                 J    t         t        |           t        |      | _        y N)superr   __init__r   executor)selfmax_workers	__class__s     r   r   zTornadoExecutor.__init__   s    ot-/*;7r   c                 P    t         t        |   ||       |j                  | _        y r   )r   r   start_ioloop)r   	scheduleraliasr   s      r   r   zTornadoExecutor.start"   s!    ot*9e< ((r   c                 R     fd}t        j                        r-t        j                  | j                  j
                        }nA j                  j                  t        j                  | j                  j
                        }t        |      }|j                  |       y )Nc                     	 | j                         }j                  j                  |       y # t        $ r5  j                  j                  gt        j                         dd    Y y w xY w)N   )result_run_job_successidBaseException_run_job_errorsysexc_info)feventsjobr   s     r   callbackz0TornadoExecutor._do_submit_job.<locals>.callback'   sb    6 %%cfff5 ! A###CFF@S\\^AB-?@As   0 ;A.-A.)r	   r   r   _jobstore_alias_loggernamer   submitr   r   add_done_callback)r   r*   	run_timesr+   r(   s   ``   r   _do_submit_jobzTornadoExecutor._do_submit_job&   s    	6 'sxx0!#s':':It||GXGXYA$$Wc33F3F	%)\\%6%68A A	H%r   )
   )__name__
__module____qualname____doc__r   r   r2   __classcell__)r   s   @r   r   r      s    	8)&r   r   )
__future__r   r&   concurrent.futuresr   tornado.genr   apscheduler.executors.baser   r   apscheduler.executors.base_py3r   apscheduler.utilr	   ImportErrorr   r   r   r   <module>r@      sA    & 
 1 ' <@<$&l $&  s   8 AA