Как мне получить Cron-подобный планировщик в Python? - PullRequest
284 голосов
/ 17 декабря 2008

Я ищу библиотеку на Python, которая обеспечит функциональность, подобную at и cron.

Мне бы очень хотелось иметь чисто Python-решение, а не полагаться на инструменты, установленные на коробке; таким образом я бегу на машинах без cron.

Для тех, кто не знаком с cron: вы можете планировать задачи на основе таких выражений, как:

 0 2 * * 7 /usr/bin/run-backup # run the backups at 0200 on Every Sunday
 0 9-17/2 * * 1-5 /usr/bin/purge-temps # run the purge temps command, every 2 hours between 9am and 5pm on Mondays to Fridays.

Синтаксис выражения времени cron менее важен, но я бы хотел иметь что-то с такой гибкостью.

Если нет чего-то такого, что могло бы сделать это для меня из коробки, любые предложения для строительных блоков, чтобы сделать что-то подобное, были бы с благодарностью приняты.

Редактировать Я не заинтересован в запуске процессов, просто "рабочие места", также написанные на Python - функции Python. По необходимости я думаю, что это будет другой поток, но не в другом процессе.

С этой целью я ищу выразительность выражения времени cron, но в Python.

Cron существует уже много лет, но я стараюсь быть максимально портативным. Я не могу полагаться на его присутствие.

Ответы [ 23 ]

0 голосов
/ 24 декабря 2010

Я взял решение Брайана, сделал несколько изменений, добавил начало стандартного парсера файла crontab и поставил его на https://bitbucket.org/dbenamy/devcron.

0 голосов
/ 16 мая 2019

Метод Crontab на сервере.

Имя файла Python hello.py

Шаг 1: Создайте файл sh, дайте имя s.sh

python3 /home/ubuntu/Shaurya/Folder/hello.py> /home/ubuntu/Shaurya/Folder/log.txt 2> & 1

Шаг 2: Открыть редактор Crontab

crontab -e

Шаг 3: Добавить время по расписанию

Использовать Форматирование Crontab

2 * * * * sudo sh /home/ubuntu/Shaurya/Folder/s.sh

Этот cron будет запускаться «В минуту 2».

0 голосов
/ 17 декабря 2008

Я не знаю, существует ли что-то подобное. Было бы легко написать свой собственный модуль времени, даты и / или календаря, см. http://docs.python.org/library/time.html

Единственное беспокойство по поводу решения на python - это то, что ваша работа должна быть всегда запущена и, возможно, автоматически «воскрешена» после перезагрузки, то, для чего вы do должны полагаться на системные зависимые решения.

...