
    Owg-                     Z    d dl Z d dlmZ d dlmZ d dlmZmZmZ d dl	m
Z
  G d de      Zy)    N)ThreadPoolExecutor)convert_yielded)BaseExecutorrun_coroutine_jobrun_job)iscoroutinefunction_partialc                   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                 B    t         |           t        |      | _        y N)super__init__r   executor)selfmax_workers	__class__s     T/var/www/horilla/myenv/lib/python3.12/site-packages/apscheduler/executors/tornado.pyr   zTornadoExecutor.__init__   s    *;7    c                 H    t         |   ||       |j                  | _        y r   )r   start_ioloop)r   	scheduleraliasr   s      r   r   zTornadoExecutor.start   s    i' ((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   funcr   _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(()T\\5F5FA $$c119dll>O>OA A	H%r   )
   )__name__
__module____qualname____doc__r   r   r/   __classcell__)r   s   @r   r
   r
   
   s    	8)&r   r
   )r"   concurrent.futuresr   tornado.genr   apscheduler.executors.baser   r   r   apscheduler.utilr   r
    r   r   <module>r;      s#    
 1 ' O O 8'&l '&r   