Невозможно выполнить задачу в фоновом режиме, используя apscheduler - PullRequest
0 голосов
/ 26 июня 2019

Я использовал Blockingscheduler раньше, но у меня проблема с использованием Backgroundscheduler.

Требуется запустить задачу планировщика после возврата значения, но запланированная задача никогда не выполняется.

from datetime import datetime
from apscheduler.schedulers.background import BackgroundScheduler

def my_job(text):
    print(text)
def job1():
    now = datetime.datetime.now()
    sched = BackgroundScheduler()
    sched.add_job(my_job, 'date', run_date=now + 
datetime.timedelta(seconds = 20), args=['text'])
    sched.start()

def fun1():
    try:
        return "hello"
    finally:
        job1()
print fun1()

Я получаю только вывод "hello", и код завершается. Ожидаемый результат - «привет» и «текст», которые должны быть выполнены один раз через 20 секунд. Пожалуйста, дайте мне знать, что я испортил !!

1 Ответ

0 голосов
/ 26 июня 2019

Вы можете найти эту запись ЧаВо просветление.

Подводя итог, скрипт Python может завершиться, как только достигнет конца, если не активны недемонические потоки.Поток планировщика по умолчанию является демоническим.

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

...