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
apscheduler - anzahl an noch auszuführenden jobs
-
- User
- Beiträge: 17
- Registriert: Freitag 24. Juni 2011, 14:18
hallo nochmal,
also mein scheduler sieht im moment so aus:
Gestartet wird es über folgende Zeilen:
Wenn nun __scheduler.stop() aufgerufen wird, bekomme ich folgenden error:
Vielen Dank.
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
Code: Alles auswählen
tscheduler = TestScheduler(config)
tscheduler.create_schedule(testsuite);
while True:
sleep(60)
sys.stdout.write('.'); sys.stdout.flush()
Was mach ich den falsch? Vermutlich muß ich die Schleife ersetzen. Aber womit?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
Vielen Dank.