twisted.py 726 B

123456789101112131415161718192021222324
  1. from apscheduler.executors.base import BaseExecutor, run_job
  2. class TwistedExecutor(BaseExecutor):
  3. """
  4. Runs jobs in the reactor's thread pool.
  5. Plugin alias: ``twisted``
  6. """
  7. def start(self, scheduler, alias):
  8. super().start(scheduler, alias)
  9. self._reactor = scheduler._reactor
  10. def _do_submit_job(self, job, run_times):
  11. def callback(success, result):
  12. if success:
  13. self._run_job_success(job.id, result)
  14. else:
  15. self._run_job_error(job.id, result.value, result.tb)
  16. self._reactor.getThreadPool().callInThreadWithCallback(
  17. callback, run_job, job, job._jobstore_alias, run_times, self._logger.name
  18. )