Три варианта, которые я могу придумать -
- Сделать работу cron, которая вызывает ваш скрипт.Cron - это общее имя для демона GNU / Linux, который периодически запускает сценарии в соответствии с заданным вами расписанием.Вы добавляете свой скрипт в crontab или помещаете символическую ссылку на него в специальный каталог, и демон выполняет его запуск в фоновом режиме.Вы можете прочитать больше в Википедии.Существует множество различных демонов cron, но в вашей системе GNU / Linux она должна быть уже установлена.
- Pythonic-подход (например, библиотека), чтобы ваш скрипт мог демонизировать себя.Да, это потребует простой петли событий (где ваши события запускаются по таймеру, возможно, обеспечивается функцией сна).Вот тот, который я рекомендую и использую - Простой демон Unix / Linux в Python
- Использование модуля Python
multiprocessing
.В этой реализации скрыты все мелочи, связанные с попыткой развить процесс и т. Д.Это довольно аккуратно.
Я бы не рекомендовал 2 или 3, потому что вы на самом деле повторяете функциональность cron.Системная парадигма Linux - позволить нескольким простым инструментам взаимодействовать и решать ваши проблемы.Если нет дополнительных причин, по которым вам следует создавать демон (помимо периодического запуска), выберите другой подход.
Кроме того, если вы используете daemonize с циклом и происходит сбой, убедитесь, что у вас есть журналыкоторый поможет вам отладить.Также придумайте способ, чтобы скрипт запускался снова.Если сценарий будет добавлен в качестве задания cron, он снова сработает через оставшееся время.