apscheduler планировчик изчакване

имам проблем относно apscheduler на pythons.

изпълнявам задача, която включва изтегляне на данни от db. Времето за отговор на dbs варира поради различни операции върху него, от различни източници и не е възможно да се предвиди кога времето за отговор на dbs ще бъде ниско.

например при бягане

    scheduler.add_interval_job(self.readFromDb, start_date = now(), seconds=60)

Параметърът секунди спира задачата, ако не е приключила, и стартира следващата задача

има ли начин за динамична промяна на параметъра за секунди? или трябва да използвам стойността по подразбиране 0?

наздраве


person gCoh    schedule 26.02.2015    source източник
comment
Искам да се уверя, че сме на една и съща страница по отношение на това какво прави този ред. Той казва на планировчика да добави задача, която се изпълнява на интервали от 60 секунди, започвайки сега. Това ли очакваш?   -  person Alex Grönholm    schedule 27.02.2015
comment
да, и това е добре. проблемът е, когато работата приключи след повече от 1 минута (прекратява)   -  person gCoh    schedule 01.03.2015


Отговори (1)


Параметърът "секунди" по никакъв начин не ограничава колко време може да отнеме работата и със сигурност не я прекратява преждевременно. Въпреки това, с настройките по подразбиране, той ще попречи на друг екземпляр на задачата да бъде зареден, ако предишният екземпляр отнема повече от определения интервал (60 секунди тук). Според мен тук имате две възможности:

  1. Игнорирайте факта, че нов екземпляр на задачата понякога не успява да стартира
  2. Увеличете параметъра max_instances от стойността по подразбиране 1, така че повече от едно копие на задачата да може да се изпълнява едновременно
person Alex Grönholm    schedule 02.03.2015