Лучший способ составить график команды Django, которой нужен root-доступ
Я использую Raspberry Pi в качестве (очень простой) домашней метеостанции.
В настоящее время у меня есть небольшой скрипт на python, который при запуске измеряет температуру и отправляет результат в виде новой строки в таблицу Google с помощью API Google Docs. Этот скрипт на python должен запускаться от имени пользователя root, и в настоящее время я получаю хорошие результаты, планируя запуск этого скрипта каждый час в crontab суперпользователя.
Я также только что получил этот Pi для запуска Nginix и uWsgi для обслуживания сайтов на платформе Django, и я хотел бы начать регистрировать температуру в локальной базе данных в дополнение к электронной таблице Google. Я хотел бы сделать это через ORM Джанго, так как это то, с чем я больше всего знаком.
У меня есть две конкретные цели:
- Настройте регулярно запланированную задачу, которая будет публиковать вновь полученные данные о температуре в локальной базе данных (с помощью Django ORM), а также в электронной таблице Google.
- Служите веб-странице (предположительно, требующей входа в систему), которая позволит удаленным пользователям "измерять температуру сейчас", а также сообщать результат (через веб-страницу) и вставлять результат в БД на стороне сервера.
Мой вопрос: каков наилучший способ сделать это, зная, что любой код, который получит доступ к датчику температуры, должен быть запущен от имени пользователя root?
Для #1, я думаю, вопрос сводится к следующему: каков наилучший способ загрузить среду Python, которая "похожа на оболочку Django", в которой она может легко выполнять все те же операции импорта (особенно такие вещи, как ORM)? Если бы я мог это сделать, я мог бы написать новый скрипт, который будет выполнять как загрузку электронных таблиц, так и запись в БД. Могу ли я / я сделать это с помощью "команды" Django, которую затем планируется запустить в crontab суперпользователя? Или я должен сделать это с помощью обычного старого скрипта на Python, который загружает нужные модули, специфичные для Django?
Для #2 я искал предложения о том, как справиться с проблемой "должен работать как корень" для показаний датчика температуры. Я явно не хочу запускать весь процесс Django с правами root. Итак, каковы мои лучшие варианты здесь?
Благодарю.
1 ответ
Django-Celery определенно стоит изучить для выполнения запланированных задач.