2010-02-11 1 views
0

Мака программы OS X запуска системы launchd позволяет работу планирования Создавая запуск программ агента, можно запускать программы с помощью одного из следующих событий:Как заменить планирование запуска программ с помощью программы Python

  • интервал времени истечет
  • определенная календарная дата пришел
  • путь к файлу был изменен
  • что-то был помещен в определенный каталог (каталог очереди)
  • объем был установлен

Я ранее полагалась на запуск программ, чтобы начать набор сценариев Python для автоматизации системы OS X. Однако, поскольку добавление нового скрипта также часто требует установки нового запускающего агента для его запуска, я хотел бы принять launchd из уравнения. Программа Python должна ждать и наблюдать за событиями, подобными приведенным выше, а затем отправить соответствующую процедуру.

Есть ли модуль Python, который подходит для обнаружения событий, подобных приведенным выше? Или, как более общий вопрос, как я могу заменить launchd в этом параметре, используя Python (и, возможно, AppleScript через мост AppScript)? Извините, если вопрос довольно расплывчатый. Предложения по чтению также приветствуются.

ответ

1

Для проблемы с мониторингом файловой системы, возможно, вы ищете pyfsevents. По this post,

FSEvents API уведомляет приложение , когда происходят изменения в файловой системе. Вы можете использовать события файловой системы для каталогов мониторов для любых изменений, , таких как создание, модификация или удаление содержащихся файлов и каталогов.

+0

Спасибо, я могу использовать это для томов и каталогов очереди. Все еще ищете что-то, что облегчает просмотр событий с учетом времени. –

+0

@ D-Bug: для планирования событий по истечении прошедшего времени вы можете использовать модуль 'sched' - он находится в стандартной библиотеке. Вы также можете проверить этот ответ SO: http://stackoverflow.com/questions/373335/suggestions-for-a-cron-like-scheduler-in-python – unutbu

+0

Следующий вопрос о pyfsevents: Кажется, что вызов pyfsevents.listen() блокирует весь процесс python, а не только вызывающий поток. Я бы хотел, чтобы поток ожидал входящих событий файловой системы. Есть ли способ сделать это? –

Смежные вопросы