Exemplo n.º 1
0
    def __init__(self, url=None, engine=None, tablename='apscheduler_jobs', metadata=None,
                 pickle_protocol=pickle.HIGHEST_PROTOCOL):
        super(SQLAlchemyJobStore, self).__init__()
        self.pickle_protocol = pickle_protocol
        metadata = maybe_ref(metadata) or MetaData()

        if engine:
            self.engine = maybe_ref(engine)
        elif url:
            self.engine = create_engine(url)
        else:
            raise ValueError('Need either "engine" or "url" defined')

        # 191 = max key length in MySQL for InnoDB/utf8mb4 tables, 25 = precision that translates to an 8-byte float
        self.jobs_t = Table(
            tablename, metadata,
            Column('id', Unicode(191, _warn_on_bytestring=False), primary_key=True),
            Column('next_run_time', Float(25), index=True),
            Column('job_state', LargeBinary, nullable=False)
        )

        self.jobs_t.create(self.engine, True)
Exemplo n.º 2
0
    def __init__(self, database='apscheduler', collection='jobs', client=None,
                 pickle_protocol=pickle.HIGHEST_PROTOCOL, **connect_args):
        super(MongoDBJobStore, self).__init__()
        self.pickle_protocol = pickle_protocol

        if not database:
            raise ValueError('The "database" parameter must not be empty')
        if not collection:
            raise ValueError('The "collection" parameter must not be empty')

        if client:
            self.client = maybe_ref(client)
        else:
            connect_args.setdefault('w', 1)
            self.client = MongoClient(**connect_args)

        self.collection = self.client[database][collection]
        self.collection.ensure_index('next_run_time', sparse=True)
Exemplo n.º 3
0
 def _configure(self, config):
     self._reactor = maybe_ref(config.pop('reactor', default_reactor))
     super(TwistedScheduler, self)._configure(config)
Exemplo n.º 4
0
 def _configure(self, config):
     self._reactor = maybe_ref(config.pop('reactor', default_reactor))
     super(TwistedScheduler, self)._configure(config)
Exemplo n.º 5
0
 def _configure(self, config):
     self._eventloop = maybe_ref(config.pop(
         'event_loop', None)) or asyncio.get_event_loop()
     super(AsyncIOScheduler, self)._configure(config)
Exemplo n.º 6
0
 def _configure(self, config):
     self._ioloop = maybe_ref(config.pop('io_loop',
                                         None)) or IOLoop.current()
     super(TornadoScheduler, self)._configure(config)
Exemplo n.º 7
0
    def _configure(self, config):
        # Set general options
        self._logger = maybe_ref(config.pop(
            'logger', None)) or getLogger('apscheduler.scheduler')
        self.timezone = astimezone(config.pop('timezone',
                                              None)) or get_localzone()

        # Set the job defaults
        job_defaults = config.get('job_defaults', {})
        self._job_defaults = {
            'misfire_grace_time':
            asint(job_defaults.get('misfire_grace_time', 1)),
            'coalesce': asbool(job_defaults.get('coalesce', True)),
            'max_instances': asint(job_defaults.get('max_instances', 1))
        }

        # Configure executors
        self._executors.clear()
        for alias, value in six.iteritems(config.get('executors', {})):
            if isinstance(value, BaseExecutor):
                self.add_executor(value, alias)
            elif isinstance(value, MutableMapping):
                executor_class = value.pop('class', None)
                plugin = value.pop('type', None)
                if plugin:
                    executor = self._create_plugin_instance(
                        'executor', plugin, value)
                elif executor_class:
                    cls = maybe_ref(executor_class)
                    executor = cls(**value)
                else:
                    raise ValueError(
                        'Cannot create executor "%s" -- either "type" or "class" must be defined'
                        % alias)

                self.add_executor(executor, alias)
            else:
                raise TypeError(
                    "Expected executor instance or dict for executors['%s'], got %s instead"
                    % (alias, value.__class__.__name__))

        # Configure job stores
        self._jobstores.clear()
        for alias, value in six.iteritems(config.get('jobstores', {})):
            if isinstance(value, BaseJobStore):
                self.add_jobstore(value, alias)
            elif isinstance(value, MutableMapping):
                jobstore_class = value.pop('class', None)
                plugin = value.pop('type', None)
                if plugin:
                    jobstore = self._create_plugin_instance(
                        'jobstore', plugin, value)
                elif jobstore_class:
                    cls = maybe_ref(jobstore_class)
                    jobstore = cls(**value)
                else:
                    raise ValueError(
                        'Cannot create job store "%s" -- either "type" or "class" must be defined'
                        % alias)

                self.add_jobstore(jobstore, alias)
            else:
                raise TypeError(
                    "Expected job store instance or dict for jobstores['%s'], got %s instead"
                    % (alias, value.__class__.__name__))
Exemplo n.º 8
0
 def _configure(self, config):
     self._ioloop = maybe_ref(config.pop('io_loop', None)) or IOLoop.current()
     super(TornadoScheduler, self)._configure(config)