Достигнуто максимальное количество запущенных экземпляров (1) — apscheduler

Я использую apscheduler для рекурсивного запуска функции в моем приложении. Основной источник этой функциональности выглядит следующим образом:

class ClassName(QtGui.QWidget)
    def __init__(self):
        super(ClassName, self).__init__()

        from apscheduler.scheduler import Scheduler
        sched = Scheduler(standalone=True)
        sched.daemonic = False
        sched.add_cron_job(self.FunctionName, second='*/5')

    def FunctionName(self):
        print("Hello World!")
        #Function contents here

    if __name__ == '__main__':
        import sys
        app = QtGui.QApplication(sys.argv)
        ClassName = ClassName()
        sys.exit(app.exec_())

Из чтения этого потока я понял, что если вызываемая функция не завершилась при запуске следующего задания, может возникнуть ошибка «Достигнуто максимальное количество запущенных экземпляров». Я понимаю теорию решения в этой теме, но не уверен в приложении.

Должен ли я явно указывать в конце вызываемой функции завершение/уничтожение процесса, чтобы гарантировать, что исходный поток будет удален до запуска следующего потока?


person jars121    schedule 30.07.2015    source источник
comment
Несколько вопросов: 1) как вы используете процессы здесь? 2) Я не вижу здесь никакой рекурсии, так как же это применимо здесь? 3) Почему вы не используете apscheduler 3, который напрямую поддерживает pyqt?   -  person Alex Grönholm    schedule 30.07.2015
comment
Я не использую процессы, но подумал, что, возможно, мне придется это сделать в соответствии с связанной веткой. Рекурсия возникает из-за добавления задания cron, рекурсии, присущей самой фактической функции, нет. На самом деле у меня были проблемы с запуском apscheduler 3.x, поэтому я установил более раннюю версию 2.x.   -  person jars121    schedule 31.07.2015
comment
Я только что установил apscheduler 3, и он работает нормально (кажется, ошибка пользователя при первой попытке). В идеале я хотел бы отложить запуск следующей запланированной функции до завершения предыдущей/текущей. Это что-то, что изначально поддерживается с помощью apscheduler, или это потребует некоторого ручного вмешательства?   -  person jars121    schedule 31.07.2015
comment
Это не поддерживается изначально. Однако вы можете настроить запланированную функцию на новое задание.   -  person Alex Grönholm    schedule 01.08.2015
comment
Спасибо за это @AlexGrönholm, очень признателен. Это действительно отличная библиотека! Я думаю, что я решил этот вопрос на данный момент.   -  person jars121    schedule 03.08.2015