#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> и дайте мне знать.