Python and SQLAlchemyJobStore Pre-Scheduler

I am using sqlalchemy data warehouse in APS . Jobs are also added by cron using the add_cron_job function. But writing to the database table is not done. Pls help me: following code

import time
import logging
from threading import Timer
from threading import Lock
from gadgetplatform.classes.utils.utilities import import_module
from apscheduler.scheduler import Scheduler

from apscheduler.jobstores.sqlalchemy_store import SQLAlchemyJobStore

class SchedulerManager(object):
    _instance = None
    _initialised = False
    lock = Lock()
    log = logging.getLogger(__name__)
    jobDict=[]

    def __new__(cls):

        if not cls._instance or not cls._initialised:
            cls.lock.acquire()
            if not cls._instance:
                cls.log.info("creating instance")
                cls._instance = super(SchedulerManager, cls).__new__(cls)
                cls._initialised = True
                cls._instance.init()
                cls.log.info("instance created")
            cls.lock.release()
            cls.log.info("lock released")
            cls.log.info("returning instance")
        return cls._instance    

    def init(self):
        self.sched=Scheduler()
        self.sched.add_jobstore(SQLAlchemyJobStore('mysql://root@localhost/mygola?charset=utf8&use_unicode=0'), 'apschedulerJobs')        

    def addToCron(self,source,time):
        self.log.info("called to add schedular")

        time = time.split(' ')

        m=str(time[0])        
        h=str(time[1])        
        d=str(time[2])        
        mnth=str(time[3])                
        yr=str(time[4])

        func=self.convertStringToFunction(source)
        self.sched.add_cron_job(func, year=yr, month=mnth, day=d, hour=h, minute=m)        
        self.jobDict.append(source)

        self.log.info("added with the time")            

    def removeFromCron(self,source):        
        func=self.convertStringToFunction(source)
        self.sched.unschedule_func(func)

    def start(self):
        self.sched.start()
        self.log.info("Schedular Started")

    def stop(self):
        self.sched.shutdown()

    def getRunningJobs(self):
        return self.jobDict

    def convertStringToFunction(self,source):
        strArr = source.rsplit('.',1)
        mod = import_module(strArr[0])
        func = getattr(mod, strArr[1])
        return func
+3
source share
1 answer

I never used APScheduler, but from the docs, it seems you need to specify in which job store to add work.

You can either make sure that the Alchemy SQL job store is standard by giving it a special name default:

self.sched.add_jobstore(SQLAlchemyJobStore('...'), 'default')

Or you can specify the name of the job store when adding a job:

self.sched.add_cron_job(func, 
                        jobstore="apschedulerJobs", 
                        year=yr, month=mnth, day=d, hour=h, minute=m)
+2
source

All Articles