from__future__importabsolute_importfromapscheduler.executors.baseimportBaseExecutor,run_jobclassTwistedExecutor(BaseExecutor):""" Runs jobs in the reactor's thread pool. Plugin alias: ``twisted`` """defstart(self,scheduler,alias):super(TwistedExecutor,self).start(scheduler,alias)self._reactor=scheduler._reactordef_do_submit_job(self,job,run_times):defcallback(success,result):ifsuccess:self._run_job_success(job.id,result)else:self._run_job_error(job.id,result.value,result.tb)self._reactor.getThreadPool().callInThreadWithCallback(callback,run_job,job,job._jobstore_alias,run_times,self._logger.name)