То, что вы действительно хотите сделать это запланировать функцию, выполняемую в определенное время. Вам нужно сделать это с помощью механизма планирования. Вы могли бы, конечно, написать один самостоятельно, но, вероятно, лучшим способом было бы использовать библиотеку, которая сделает это за вас.
APScheduler
- очень зрелая хорошая библиотека для такого рода вещей.
Docs: http://apscheduler.readthedocs.org/en/latest/
PyPi: https://pypi.python.org/pypi/APScheduler/3.0.0
Пример
Вот быстрый маленький пример
from apscheduler.schedulers.background import BlockingScheduler
scheduler = BlockingScheduler()
@scheduler.scheduled_job('interval', seconds=5, timezone='UTC')
def hello():
print('Hello!')
scheduler.start()
Это будет работать функция hello
каждые пять секунд. Вы можете изменить seconds=5
на days=1
, чтобы он запускался один раз в день. Существует много больше конфигурации вы можете сделать, поэтому вы, вероятно, захотите прочитать документацию. Он может выразить примерно любой формат времени даты, который вы могли бы захотеть, включая cron
.
Он также поддерживает различные типы планировщиков, например, я выбрал BlockingScheduler
, потому что хотел, чтобы вся программа работала как функция механизма планирования (чтобы вы могли легко попробовать это в своей собственной системе). Вы также можете использовать, например, BackgroundScheduler
, который позволит вам планировать задачи из вашей программы эффективным образом, который не будет блокировать основной поток (исправляет ваш переход в цикл навсегда).
Рассматривали ли вы использование задания cron для выполнения этого и просто запускаете программу периодически? – 2014-09-10 20:06:00
какая ОС вы используете? –
Raspbian Wheezy на моем RPi –