Как выполнить скрипт 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
откройте планировщик задач и нажмите на библиотеку планировщика задач, чтобы увидеть текущие задачи, которые выполняются. Нажмите на Создать задачу выбор.
Шаг 3
на вкладке "Общие" укажите название новой задачи и нажмите на кнопку Run whether user is logged on or not
, проверьте параметр Run with highest privileges
и убедитесь, что вы настроили соответствующую версию ОС (в моем случае я выбрал Windows 7, Windows Server 2008 R2
.
Шаг 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\
Шаг 5
перейдите на вкладку Триггеры и выберите, как часто вы хотите, чтобы выполнить эту задачу.
Шаг 6
наконец, проверьте свою задачу, чтобы увидеть, действительно ли она работает, выбрав ее из библиотеки планировщика задач и нажав на опция Run.
второй вариант: запустите .py файл с планировщиком задач
Шаг 1
откройте планировщик задач и нажмите на библиотеку планировщика задач, чтобы увидеть текущие задачи, которые выполняются. Нажмите на опцию Создать задачу.
Шаг 2
на вкладке Общие введите имя нового задачи и нажмите на кнопку Run whether user is logged on or not
, проверьте параметр Run with highest privileges
и убедитесь, что вы настроили соответствующую версию ОС (в моем случае я выбрал Windows 7, Windows Server 2008 R2
.
Шаг 3
на вкладке Действия нажмите кнопку Создать и введите следующее:
на Программы/Скрипты вам нужно посмотреть на Python.exe-путь, который планировщик задач вызовет для запуска скрипта python. В моем случае, мой питон.путь exe был:
C:\Users\userX\python.exe
на добавить аргументы (необязательно) вам нужно только введите имя скрипта python. В моем случае, путь:
Permissions_dump.py
на Start in (необязательно) вам нужно ввести путь к файлу, но без имени скрипта python, который есть:
C:\Users\userX\PycharmProjects99_vendors_costs
Шаг 4
перейдите на вкладку Триггеры и выберите, как часто вы хотите, чтобы выполнить эту задачу.
Шаг 5
наконец, проверьте свою задачу, чтобы увидеть, действительно ли она работает, выбрав ее из библиотеки планировщика задач и нажав на выполнить выбор.
ссылки:
Если вы используете OSX, то launchd является предпочтительным способом для планирования задач. Существует OSX CLI для launchd под названием помощью следущей но если вы предпочитаете GUI, мой предпочтительный -launchcontrol.