Как выполнить скрипт python по расписанию?

У меня есть два Python scripts на моей машине, которую я хочу выполнить два раза в день в определенный период времени. Как автоматизировать эту задачу? Поскольку я буду вдали от дома и, следовательно, моего компьютера на некоторое время, я хочу загрузить их на сайт и быть выполненным оттуда автоматически без меня.

Как я могу это сделать?

3 ответов


можно использовать cron для этого, если вы находитесь на Linux-машине. Cron - это системный демон, используемый для выполнения определенных задач в определенное время.

cron работает по принципу crontab, текстовый файл со списком команд для запуска в указанное время. Он следует определенному формату, который можно подробно объяснить в man 5 crontab

формат для crontab

каждая из секций разделена пробелом, а последняя секция имеет один или несколько пространства в нем. В разделах 1-5 не допускаются пробелы, только между ними. Разделы 1-5 используются для указания времени и частоты выполнения задачи. Вот как выложена работа cron:

минута (0-59), час (0-23, 0 = полночь), день (1-31), месяц (1-12), день недели (0-6, 0 = воскресенье), команда

01 04 1 1 1 /usr/bin/somedirectory/somecommand

приведенный выше пример будет запускать /usr/bin/somedirectory / somecommand в 4:01 утра 1 января плюс каждый понедельник в январе. Звездочка ( * ) можно использовать так, чтобы каждый экземпляр (каждый час, каждый будний день, каждый месяц и т. д.) периода времени используется. Код:

01 04 * * * /usr/bin/somedirectory/somecommand

приведенный выше пример будет запускать /usr/bin/somedirectory / somecommand в 4:01 утра каждый день каждого месяца.

значения, разделенные запятыми, могут использоваться для выполнения более одного экземпляра конкретной команды в течение периода времени. Значения, разделенные черточкой, можно использовать для непрерывного выполнения команды. Код:

01,31 04,05 1-15 1,6 * /usr/bin/somedirectory/somecommand

приведенный выше пример будет работать /usr/bin/somedirectory/somecommand в 01 и 31 часов после 4: 00 утра и 5:00 утра с 1 по 15 января каждого года.

текст "/usr/bin/somedirectory/somecommand" в приведенных выше примерах указывает задачу, которая будет выполняться в указанное время. Рекомендуется использовать полный путь к нужной команды, как показано в приведенных выше примерах. Введите который somecommand в терминале найти полную путь к кому-то. Crontab начнет работать, как только он будет правильно отредактирован и сохранен.

вы можете запустить скрипт несколько раз за единицу времени. Например, если вы хотите запускать его каждые 10 минут, используйте следующую запись crontab (выполняется в минутах, делимых на 10: 0, 10, 20, 30, etc.)

*/10 * * * * /usr/bin/somedirectory/somecommand

что также эквивалентно более громоздким

0,10,20,30,40,50 * * * * /usr/bin/somedirectory/somecommand


в Windows я придумал два решения.

первый вариант: создать .Bat-файл.

Шаг 1

создать .файл bat для указания команды, которую вы хотите запустить, и файла сценария, который будет выполнен, например:

start C:\Users\userX\Python.exe C:\Users\userX\PycharmProjects\Automation_tasks\create_workbook.py

Шаг 2

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

Main window Task Scheduler

Шаг 3

на вкладке "Общие" укажите название новой задачи и нажмите на кнопку Run whether user is logged on or not, проверьте параметр Run with highest privileges и убедитесь, что вы настроили соответствующую версию ОС (в моем случае я выбрал Windows 7, Windows Server 2008 R2.

High privileges

Шаг 4

на вкладке Действия нажмите кнопку Создать и введите следующий:

на Программы/Скрипты вам нужно найти путь Powershell, который вызовет планировщик задач для запуска .Bat-файл. В моем случае мой путь Powershell был: C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe

на добавить аргументы (необязательно) необходимо ввести путь к файлу, который будет выполняться Powershell. В моем случае, путь:

C:\Users\userX\Desktop\run_the_bat_file.bat

на Start in (необязательно) вам нужно ввести путь файл, но без имени .bat файл, то есть:

C:\Users\userX\Desktop\

Configure the settings for Powershell

Шаг 5

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

Frequency of the task to be executed

Шаг 6

наконец, проверьте свою задачу, чтобы увидеть, действительно ли она работает, выбрав ее из библиотеки планировщика задач и нажав на опция Run.

Test your task

второй вариант: запустите .py файл с планировщиком задач

Шаг 1

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

Main window Task Scheduler

Шаг 2

на вкладке Общие введите имя нового задачи и нажмите на кнопку Run whether user is logged on or not, проверьте параметр Run with highest privileges и убедитесь, что вы настроили соответствующую версию ОС (в моем случае я выбрал Windows 7, Windows Server 2008 R2.

High privileges

Шаг 3

на вкладке Действия нажмите кнопку Создать и введите следующее:

на Программы/Скрипты вам нужно посмотреть на Python.exe-путь, который планировщик задач вызовет для запуска скрипта python. В моем случае, мой питон.путь exe был: C:\Users\userX\python.exe

на добавить аргументы (необязательно) вам нужно только введите имя скрипта python. В моем случае, путь:

Permissions_dump.py

на Start in (необязательно) вам нужно ввести путь к файлу, но без имени скрипта python, который есть:

C:\Users\userX\PycharmProjects99_vendors_costs

Python configuration

Шаг 4

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

Frequency of the task to be executed

Шаг 5

наконец, проверьте свою задачу, чтобы увидеть, действительно ли она работает, выбрав ее из библиотеки планировщика задач и нажав на выполнить выбор.

Test your task

ссылки:

  1. https://gis.stackexchange.com/questions/140110/running-python-script-in-task-scheduler-script-will-not-run?newreg=603bcdbc381b41a283e5d8d0561b835e
  2. https://www.youtube.com/watch?v=oJ4nktysxnE
  3. https://www.youtube.com/watch?v=n2Cr_YRQk7o

Если вы используете OSX, то launchd является предпочтительным способом для планирования задач. Существует OSX CLI для launchd под названием помощью следущей но если вы предпочитаете GUI, мой предпочтительный -launchcontrol.