python apscheduler не выполняется cron каждые 1 минуту

#python

#python

Вопрос:

Я использую apscheduler для выполнения задания cron, теперь я хочу, чтобы работа выполнялась каждые 1 минуту. Это мой код:

 # -*- coding: utf-8 -*-
import time

from apscheduler.schedulers.background import BackgroundScheduler
from apscheduler.triggers.interval import IntervalTrigger


if __name__ == '__main__':
    scheduler = BackgroundScheduler()
    scheduler.start()
    try:
        while True:
            time.sleep(2)
    except (KeyboardInterrupt, SystemExit):
        scheduler.shutdown()


@scheduler.scheduled_job(IntervalTrigger(seconds=60))
def func_to_be_executed():
    print("I am running......")
  

Но задание выполняется только один раз, что я должен сделать, чтобы оно выполнялось каждую минуту с помощью cron?

Комментарии:

1. Это /1 не имеет особого смысла.

2. Я игнорирую какой-то важный параметр?@ KlausD.

Ответ №1:

Попробуйте использовать подход декоратора. Это должно сработать.

 from apscheduler.schedulers.background import BackgroundScheduler
from apscheduler.triggers.interval import IntervalTrigger

scheduler = BackgroundScheduler()
scheduler.start()

@scheduler.scheduled_job(IntervalTrigger(seconds=60))
def func_to_be_executed():
  pass
  

Код для BlockingSchedular — используйте, когда планировщик — единственное, что работает в вашем процессе

 from apscheduler.schedulers.blocking import BlockingScheduler
from apscheduler.triggers.interval import IntervalTrigger

sched = BlockingScheduler()

@sched.scheduled_job(IntervalTrigger(seconds=10))
def timed_job():
    print('This job is run every 10 seconds.')

sched.start()
  

Комментарии:

1. Как сохранить его в рабочем состоянии? приложение завершает работу после выполнения @Simplecode

2. @scheduler.scheduled_job(интервал запуска (секунды = 60)) Ошибка атрибута: объект типа «планировщик» не имеет атрибута «scheduled_job»

3. Ошибка атрибута: объект типа ‘scheduler’ не имеет атрибута ‘scheduled_job’ — я не получаю эту ошибку, используя APScheduler версии 3.6.3 Как поддерживать его в рабочем состоянии — вы используете flask или любой другой сервер?

4. @Dolphin, в таком случае, пожалуйста. используйте BlockingScheduler() вместо BackgroundScheduler(). Пожалуйста. смотрите, ответ также обновляется новым кодом. Запустите сценарий BlockingSchedular — python <script_path> и дайте мне знать.