Мне было интересно, почему мои запланированные сообщения не работали автоматически в Трясогузке, но я вижу в документации, что для этого требуется команда управления. Я не знаком с написанием пользовательских команд управления, и мне интересно, как заставить команду python manage.py publish_scheduled_pages
автоматически срабатывать каждый час?
Где этот код будет находиться в дереве документов? Есть ли код, который мне просто нужно добавить, и он запустится оттуда? Или что-то требуется на сервере для запуска этих команд по расписанию?
Любая помощь будет оценена по достоинству. Я нигде не смог найти какой-либо существующий код для этой функции в Трясогузке, и мне интересно, почему в админке есть кнопка для планирования публикации, но эта функция еще не встроена?
Вы, вероятно, знакомы с командами управления, поскольку python manage.py runserver
, makemigrations
и migrate
являются командами управления.
Вы можете увидеть доступные команды все с помощью python manage.py -h
publish_scheduled_pages
следует вызывать периодически. Форма Документы по трясогузке:
This command publishes, updates or unpublishes pages that have had these actions scheduled by an editor. We recommend running this command once an hour.
Периодическое выполнение команды может осуществляться различными способами. Через crontab, наверное, самый распространенный. Чтобы отредактировать кронтаб:
$ crontab -e
Добавить (за каждую первую минуту часа):
0 * * * * python /path/to/your/manage.py publish_scheduled_pages --settings=your.settings
Примечание. Если вы храните данные сеанса в базе данных, Django также требует периодической очистки этих данных. docs.djangoproject.com/en/2.2/topics/http/sessions/…
Понимаю. Итак, эта команда уже написана и встроена, мне просто нужно запускать ее на сервере каждый час. Мне было неясно, нужно ли мне писать пользовательскую команду управления, чтобы это произошло. Спасибо за ваше руководство. Я попробую!
Вы, вероятно, настроили бы crontab на своем сервере для запуска каждый час (или каждые 5 минут, или каждую минуту, если вы действительно хотите). Он должен: войти в вашу среду и выполнить
python3 manage.py publish_scheduled_pages
. Вот и все. Вы также можете использовать такую службу, как супервизор, для запуска этих типов задач вместо заданий cron.