Seite 1 von 1
					
				apscheduler - anzahl an noch auszuführenden jobs
				Verfasst: Dienstag 19. November 2013, 11:21
				von uwerothfeld
				Hallo zusammen,
kann mir jemand sagen wie ich beim APScheduler rausbekomme wie viel Jobs noch zu bearbeiten sind? Oder besser gesagt, wie ich den APScheduler dazu bekomme, nach dem letzten Job sich zu beenden?
Dankeschön.
uwe
			 
			
					
				Re: apscheduler - anzahl an noch auszuführenden jobs
				Verfasst: Dienstag 19. November 2013, 12:23
				von uwerothfeld
				hallo nochmal,
also mein scheduler sieht im moment so aus:
Code: Alles auswählen
class TestScheduler(object):
    def __init__(self, config):
        self.__config = config
        self.__scheduled_jobs = 0
        self.__scheduler = Scheduler()
        atexit.register(lambda: self.__scheduler.shutdown(wait=False))
        self.__is_running = False
    def create_schedule(self, testsuite):
        if(self.__is_running == False):
            self.start()
        command = self.__config.get("TestCase", "TEST_CASE_COMMAND_CONTROL_LINK")
        now = datetime.datetime.now()
        print "created jobs ..."
        for testcase in testsuite:
            for operation in testcase:
                #create the task
                job_command = command % (operation.vm_name, operation.link_state)
                job_start_time = now + datetime.timedelta(minutes = (int(operation.time)/10))
                self.__scheduler.add_date_job(self.job, job_start_time, [job_command])
                self.__scheduled_jobs+=1
        self.__scheduler.print_jobs()
    def job(self, job_command):
        print "\nexecute: " + job_command
        self.__scheduled_jobs-=1
        if(self.__scheduled_jobs <= 0):
            self.stop()
    def start(self):
        print "start scheduler ..."
        self.__scheduler.start()
    def stop(self):
        print "stop scheduler ..."
        self.__scheduler.shutdown()
        self.__scheduled_jobs=0
        self.__is_running = False
Gestartet wird es über folgende Zeilen:
Code: Alles auswählen
tscheduler = TestScheduler(config)
tscheduler.create_schedule(testsuite);
while True:
                sleep(60)
                sys.stdout.write('.'); sys.stdout.flush()
Wenn nun __scheduler.stop() aufgerufen wird, bekomme ich folgenden error:
File "/usr/lib/python2.6/site-packages/apscheduler/scheduler.py", line 512, in _run_job
    retval = job.func(*job.args, **job.kwargs)
  File "testscheduler.py", line 50, in job
    self.stop()
  File "testscheduler.py", line 58, in stop
    self.__scheduler.shutdown()
  File "/usr/lib/python2.6/site-packages/apscheduler/scheduler.py", line 135, in shutdown
    self._threadpool.shutdown(wait)
  File "/usr/lib/python2.6/site-packages/apscheduler/threadpool.py", line 125, in shutdown
    thread.join()
  File "/usr/lib64/python2.6/threading.py", line 635, in join
    raise RuntimeError("cannot join current thread")
RuntimeError: cannot join current thread
Was mach ich den falsch? Vermutlich muß ich die Schleife ersetzen. Aber womit?
Vielen Dank.