Как запланировать выполнение задания на 8 вечера CET, используя пакет расписания в python - PullRequest
0 голосов
/ 02 апреля 2019

Я хочу запланировать запуск сценария Python на каждый рабочий день (с понедельника по пятницу) в 20:00 CET. Как это можно сделать.

   import schedule
    import time

    def task():
        print("Job Running")

    schedule.every(10).minutes.do(task)

Как это можно сделать.

1 Ответ

1 голос
/ 02 апреля 2019

Есть ли причина, по которой вы не можете использовать crontab или планировщик задач Windows для планирования своих заданий?

Ответ один:

В документации модуля schedule не указан простой способ запланировать запуск сценария Python на каждый рабочий день (с понедельника по пятницу) в 8 часов вечера CET.

Кроме того, использование часовых поясов не поддерживается в модуле schedule.
Справка: 4.1.3. Поддерживает ли расписание часовые пояса?

Вот способ запланировать выполнение задания на каждый рабочий день в 20:00 (20:00) с помощью модуля schedule.

import schedule
import time

def schedule_actions():

  # Every Monday task() is called at 20:00
  schedule.every().monday.at('20:00').do(task)

  # Every Tuesday task() is called at 20:00
  schedule.every().tuesday.at('20:00').do(task)

  # Every Wednesday task() is called at 20:00
  schedule.every().wednesday.at('20:00').do(task)

  # Every Thursday task() is called at 20:00
  schedule.every().thursday.at('20:00').do(task)

  # Every Friday task() is called at 20:00
  schedule.every().friday.at('20:00').do(task)

  # Checks whether a scheduled task is pending to run or not
  while True:
    schedule.run_pending()
    time.sleep(1)


def task():
  print("Job Running")


schedule_actions()

Ответ второй:

Я потратил дополнительное время на изучение использования планировщика внутри скрипта Python. Во время исследования я обнаружил библиотеку Python - Advanced Python Scheduler (APScheduler).
Эта библиотека выглядит очень гибкой, основываясь на документации модуля .

Вот пример, который я собрал для вас, который работал в моем тестировании.

from apscheduler.schedulers.background import BlockingScheduler

# BlockingScheduler: use when the scheduler is the only thing running in your process
scheduler = BlockingScheduler()

# Other scheduler types are listed here: 
# https://apscheduler.readthedocs.io/en/latest/userguide.html

# Define the function that is to be executed
# at a scheduled time
def job_function ():
   print ('text')

# Schedules the job_function to be executed Monday through Friday at 20:00 (8pm)
scheduler.add_job(job_function, 'cron', day_of_week='mon-fri', hour=20, minute=00)

# If you desire an end_date use this
# scheduler.add_job(job_function, 'cron', day_of_week='mon-fri', hour=20, minute=00, end_date='2019-12-31')

# Start the scheduler
scheduler.start()
...