cron запуск python скрипта

Как запустить скрипты python через cron на Linux

Описание процесса запуска скриптов python на сервере Linux.

Альтернативы cron на python — timer или периодические задачи (celery).

Подготовка сервера

Сервер должен быть сконфигурирован для работы с python. Повторю основное из статьи по ссылке.

На сервере должны быть установлены пакеты для python:

Установлен пакет python3-venv:

Положить файлы в требуемую директорию и создать там виртуальную среду:

Подготовка файла

В верху файла python добавить строку ведущую к виртуальному окружению python:

Сделать файл исполняемым:

Если нужны зависимости (модули) к файлу их можно отдельно установить через файл requirements.txt.

Добавление в cron

А если мы вошли в качестве другого пользователя, то создадим сначала ему кронтаб:

Будет предложено какой редактор использовать для просмотра кронов. Пропустите это сначала и посмотрите где находится nano (если конечно предпочтение отдается ему):

А затем указывая его путь установим редактор по умолчанию:

Добавить наш скрипт:

/ project / app / python_script.py >

/ project / logs / python_script.log 2 >& 1

Строка состоит из: время запуска / скрипт запуска / лог запуска (если ошибок не будет, он будет пустым, если специально туда ничего не выводить).

Возможные ошибки

Не видится путь к модулям. Используйте эту статью.

Читайте также

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

Источник

Управление Cron-задачами на Python

В этой статье вы узнаете, почему так важно планирование задач с использованием cron. Также вы познакомитесь с python-crontab — модулем, написанным на языке Python, который позволяет взаимодействовать с crontab. Вы научитесь писать программы, которые управляют cron-задачами.

Что такое Cron?

Во время администрирования системы, часто бывает необходимо запускать фоновые задачи на сервере, чтобы выполнять какую-нибудь рутинную работу. Cron — это системный процесс, который используется для выполнения фоновых задач по заданному распорядку. Cron необходим файл, который называется crontab. Он содержит список задач, которые должны выполниться в фоновом режиме в определенное время.

Чтобы посмотреть задачи cron, запущенные в вашей системе, наберите в терминале:

Эта команда выводит список задач в файле crontab. Чтобы добавить новую задачу, введите:

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

Звездочки (*) означают, что задача должна запускаться при любом значении этой еденицы времени.

Представляем Python-Crontab

После установки, вы можете импортировать его в свою программу:

Создание задачи cron

Используя модуль CronTab, подключитесь в системе crontab.

Эта команда создает подключение к системе crontab для конкретного пользователя. Давайте пробежимся в цикле по задачам cron, и вы сможете увидеть любую задачу, созданную вручную этим пользователем.

Давайте продолжим и создадим новую задачу cron используя модуль CronTab. Вы можете создать новую задачу используя метод new, указав команду, которая должна быть выполнена.

Читайте также:  как прописать принтер на компьютер windows 10

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

Давайте добавим в расписание задачу, чтобы она запускалась каждую минуту. Таким образом, с интервалом в одну минуту в файл dateInfo.txt будет добавляться текущая дата и время. Чтобы запланировать задачу на выполнение каждую минуту, добавьте следующую строку кода:

Теперь, когда вы запланировали задачу, вам нужно записать ее в crontab.

Вот полное содержимое файла scheduleCron.py :

Сохраните изменения и запустите программу.

Когда она будет запущена, проверьте файл crontab, при помощи следующей команды:

Эта команда должна вывести только что добавленную задачу.

Подождите минуту и проверьте вашу корневую директорую. Вы должны увидеть файл dateInfo.txt с текущей датой и временем. Этот файл будет обновляться каждую минуту, и новые данные будут добавляться в конец имеющегося содержимого.

Редактирование существующей задачи cron

Чтобы отредактировать существующую задачу, вам нужно найти её по команде или по Id. Вы можете добавить Id к задаче в виде комментария, когда её создаете. Вот как вы можете это сделать:

Вам нужно пройти циклом все задачи в crontab и проверить присутствие коментария dateinfo. Вот код:

Проверяем коментарий каждой задачи используя свойство job.comment.

После того как вы нашли задачу, запланируйте её заново и запишите в cron. Вот окончательный код:

Вы должны увидеть задачу с отредактированным временем.

Удаление задач из crontab

Python-crontab предоставляет методы для очистки crontab или удаления отдельных задач. Вы можете удалить задачу из crontab по его расписанию, комментарию или команде.

Также, чтобы удалить задачу с заданным коментарием, вы можете напрямую вызвать метод remove на my_cron безо всяких циклов. Вот код:

Когда вы закончите с изменениями задач, запишите их обратно в cron, используя следующую команду:

Получение частоты выполнения задачи

Проверка расписания задачи

Python-crontab предоставляет функциональность для проверки расписания конкретной задачи. Чтобы это работало, вам нужно установить модуль croniter используя pip:

После этого вызовите метод schedule на задаче, чтобы получить ее расписание:

В итоге должен получиться вот такой код:

Подведем итоги

В этой статье вы увидели, как пользоваться python-crontab для подключения к системному crontab из программы на языке Python. Используя python-crontab вы можете автоматизировать процесс создания, редактирования и планирования задач cron.

Пользовались ли вы этим или каким-нибудь другим модулем для работы с crontab? Пишите в комментариях, я буду рад услышать ваше мнение.

Источник

Cron запуск python скрипта

Я, как настоящий старовер, решил построить «data-pipeline» без коннекторов и DAG-менеджеров. Положив два перста на мышку, началась упорная работа. Разобрался с API рекламных систем, установил драйвер bigquery, залил первую таблицу в датасет. Победа была близка, осталось всё автоматизировать. Я начал разворачивать Airflow, а потом проснулся и вспомнил про cron.

Вспомнив про ранее купленный VPS, куда я деплоил свой tf-idf кластеризатор. Было решено залить скрипт на сервер и настроить его запуск на 6 утра ежедневно.

Читайте также:  6103290009 код тн вэд

Cron — это демон, а демон — это программа работающая в фоновом режиме. Ну а если вы программировали на Python — вам должны быть знакомы процессы-демоны. Запуск Cron-задания — это легко, но только в случаях когда мы говорим об выполнении php и bash скриптов. С Python всё иначе.

Устанавливаем Python на сервер

Выполняем, указные команды на примере Ubuntu.

Проверяем успешность установки командой python3.

Создаем виртуальное окружение virtalenv

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

Теперь мы видим рядом в консоли перед строкой приписку (venv) — это значит, что мы в виртуальном окружении.

Запуск Python-скрипта с помощью Сron

Давай потестируем то, что у нас получилось на маленьком скрипте, который будет писать в файл дату и время его активации. Таким образом мы проверим как работает cron. Тестовый скрипт, который мы положим в корень папки проекта, у меня это / home / iakulshin / pipeline, заливаем через файловый менеджер filezilla и прочие, если вы хардкорный девопс-дата-инженер удачи вам с nano. Заливаем скрипт указанный ниже в нашу папку.

Давайте попробуем создать cron задание для тестового запуска. В целом нам будут нужны 2 команды:

Появлеятся файлик с крон задачами в редакторе nano. Наша задача установить задание, которое будет запускать наш скрипт каждую минуту.

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

Как понять что Cron срабатывает?

Чтобы удостовериться, что cron-таск отрабатывает, нам необходимо добавить задачу и обратиться к логам сервера, для этого идем в консоль и пишем следующую команду:

В нем вы увидите следующие записи:

Это означает, что cron срабатывает и воспроизводит команду, которую вы указали после звездочек. Но что делать, если python-скрипт всё еще не работает?

Cron срабатывает но Python-скрипт не выполняется

Самая типичная проблема, которая связана с «холостым» крон-таском — это недоступность библиотек, неверный выбор virtual env и версии python. Способ выбранный выше — это способ к которому я пришел спустя десяток часов поисков и изучения stackoverflow. Что нужно проверить для успешного запуска скрипта:

Возьмите команду, которую собирались добавь в крон и запустите её, это поможет словить ошибки связанные с недоступностью библиотек. В моем случае Скрипт не видел импортируемый файл, это я вылечил добавлением папки в системный путь. Добавляем в скрипты следующий код:

Если скрипт запускается по прямой команде из консоли, но cron всё еще не выполняется, то ошибка 100% в том, что ваш скрипт запускается не из под virtualenv или вы запускаете скрипт из под python не подходящей версии, поэтому проверяем следующее:

Читайте также:  как скинуть пароль на windows через биос

В целом данный гайд должен помочь вам разобраться с запуском Python скриптов с помощью Cron. Однако, я оставлю ссылки на полезные треды в stackoverflow, где представлены дополнительные способы решения этой проблемы.

Источник

Управление заданиями Cron с помощью Python

Что такое Крон?

Во время системного администрирования необходимо запускать фоновые задания на сервере для выполнения рутинных задач. Cron — это системный процесс, который используется для рутинного выполнения фоновых задач. Cron требует файл с именем crontab который содержит список задач, которые должны быть выполнены в определенное время. Все эти задания выполняются в фоновом режиме в указанное время.

Для просмотра заданий cron, запущенных в вашей системе, перейдите к терминалу и введите:

Приведенная выше команда отобразит файл crontab котором вы можете запланировать работу. Допустим, у вас есть файл с именем hello.py который выглядит следующим образом:

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

Звездочки (*) в синтаксисе синхронизации указывают, что он будет выполняться каждый раз.

Представляем Python-Crontab

Написание вашей первой работы Cron

Сохраните вышеуказанные изменения.

Приведенная выше команда создает доступ к системному crontab пользователя. Давайте пройдемся по заданиям cron, и вы сможете увидеть любые созданные вручную задания cron для конкретного имени пользователя.

Сохраните изменения и попробуйте выполнить scheduleCron.py и у вас должен быть список заданий cron, если таковые имеются, для конкретного пользователя. Вы должны увидеть что-то похожее при выполнении вышеуказанной программы:

Как вы можете видеть в приведенной выше строке кода, я указал команду, которая будет выполняться при выполнении задания cron. Как только у вас появится новое задание cron, вам нужно запланировать задание cron.

Источник

Как запустить скрипт python через cron?

Всем доброго времени суток.
Написал небольшой скрипт на питоне и добился чтобы он выполнялся командой из консоли:
/var/prog/runner.py

прописываю в cron:
* 5 * * * /var/prog/runner.py

Запуска не происходит. В логах тоже ничего интересного:

Apr 26 22:20:01 248709 CRON[18658]: (root) CMD (/var/prog/runner.py)
Apr 26 22:20:03 248709 CRON[18657]: (CRON) info (No MTA installed, discarding output)

Apr 26 22:20:01 248709 CRON[18658]: (root) CMD (/var/prog/runner.py)

Добавить шебанг в первую строку: #!/usr/bin/env python3

Дать права на выполнение: chmod +x /var/prog/runner.py

Я так полагаю опечатались.

Правильно видимо:
0 5 * * * cd /var/prog && python3 runner.py
или:

Enlighted_one, это априори не правильно!

Ваша команда:
cd /var/prog/runner.py
осуществляет переход в удаво-скрипт и после этого вы ещё раз указываете его на выполнение!

Вы почитайте, что делает команда cd.
А делает она переходы в каталоги и папки, но никак не в файлы!
Поэтому надо правильно писать.
Просто проверьте, и напишите, как я вам написал и сами увидите, что всё прекрасно отрабатывает и это именно правильное написание команды.

Источник

Компьютерный онлайн портал