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.