У меня есть довольно легкий сценарий, который я хочу запускать периодически в фоновом режиме каждые 5 часов или около того. Сценарий проходит через несколько разных веб-сайтов, сканирует их на наличие нового материала и либо извлекает из них файлы .mp3, либо любит песни на YouTube на основе их содержимого. Есть несколько вещей, которых я хочу достичь с помощью этой программы, и я не уверен, как их достичь:

  • Запускайте программу каждые 5 часов - я не знаком с операциями синхронизации системного уровня.
  • Эффективно запускать программу в фоновом режиме - я хочу, чтобы эти «обновления» происходили без ведома пользователя.
  • Пусть программа активируется при запуске - я знаю, как бы это настроить как пользователь, но я не уверен, как добавить такую конфигурацию в файл python, если это вообще возможно. Имейте в виду, что это будет простой скрипт .py - я не собираю его в исполняемый файл.

Программа разработана в основном с учетом OSX и других систем на основе Unix. Какой-нибудь совет по достижению некоторых из этих целей?

2
user1427661 31 Янв 2013 в 01:32

2 ответа

Лучший ответ

Если ваш сценарий не должен постоянно выполняться, и, похоже, его нет, я бы посоветовал вам настроить работу cron.

В обычном Linux-боксе вы можете редактировать свой crontab file с помощью:

$ crontab -e

Это откроет ваш crontab в вашем стандартном редакторе и установит файл crontab для вас после того, как вы закончите (т.е. вы сохраните его)

Типичная команда crontab выглядит так:

# m h  dom mon dow   command
 15  0   *   *   *    /bin/bash /home/yourself/bin/dump_my_tables.sh

Эта строка будет выполняться dump_my_tables.sh каждый день в 00:15. Вашему сценарию понадобится примерно так:

0  */5  *  *  *   /usr/bin/python /home/yourself/bin/scrape_the_web.py

NB :

  • Время - местное время машины (!)
  • Некоторые версии cron не принимают синтаксис */5, вам нужно вручную указать часы, когда вы хотите запланировать сценарий, т.е. 0,5,10,15,20
  • Возможно, вы захотите перенаправить вывод, но это выходит за рамки этого ответа
4
Oerd 30 Янв 2013 в 23:06

Запускайте программу каждые 5 часов - я не знаком с операциями синхронизации системного уровня.

Для NIX Cron является решением по умолчанию для достижения этой цели

Эффективно запускать программу в фоновом режиме - я хочу, чтобы эти «обновления» происходили без ведома пользователя.

С помощью cron программа будет работать в фоновом режиме на вашем сервере. Пользователь не должен быть затронут этим. Если пользователь загружает страницу просмотра mp3-файлов, которые вы удалили. Затем, посреди вашего скрипта, выполняющего / сохраняющего данные в базе данных, пользователь нажимает кнопку «Обновить», могут появиться новые mp3, я не знаю, имелось ли это в виду под «без ведома пользователя»

Пусть программа активируется при запуске - я знаю, как бы это настроить как пользователь, но я не уверен, как добавить такую конфигурацию в файл python, если это вообще возможно. Имейте в виду, что это будет простой скрипт .py - я не собираю его в исполняемый файл.

Я почти уверен, что записи cron сохранятся при перезагрузке (я не на 100%), убедитесь, что демон cron запущен при загрузке

2
dm03514 30 Янв 2013 в 21:41