r4i-ZddlZddlmZddlmZddlmZmZmZddl m Z GddeZ y)N)ThreadPoolExecutor)convert_yielded) BaseExecutorrun_coroutine_jobrun_job)iscoroutinefunction_partialc4eZdZdZdfd ZfdZdZxZS)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 cBt|t||_yN)super__init__rexecutor)self max_workers __class__s i/mnt/ssd/data/python-lab/DaemonControl/venv/lib/python3.12/site-packages/apscheduler/executors/tornado.pyrzTornadoExecutor.__init__s *;7 cHt||||j|_yr )r start_ioloop)r scheduleraliasrs rrzTornadoExecutor.starts  i' (( rcRfd}tjr-tj|jj }nAj jtj|jj }t|}|j|y)Nc |j}jj|y#t$r5jjgt j ddYywxYw)N)result_run_job_successid BaseException_run_job_errorsysexc_info)feventsjobrs rcallbackz0TornadoExecutor._do_submit_job..callbacksb 6%%cfff5! A###CFF@S\\^AB-?@ As0;A.-A.) rfuncr_jobstore_alias_loggernamersubmitrradd_done_callback)rr& run_timesr'r$s`` r_do_submit_jobzTornadoExecutor._do_submit_jobs 6 'sxx 0!S(()T\\5F5FA $$c119dll>O>OA A  H%r) )__name__ __module__ __qualname____doc__rrr/ __classcell__)rs@rr r s 8)&rr ) r"concurrent.futuresr tornado.genrapscheduler.executors.baserrrapscheduler.utilrr rrr;s# 1'OO8'&l'&r