Выполнение команды управления монитором в Django

Я пишу приложение Django, которое использует команду управления для извлечения данных из разных источников. План состоит в том, чтобы выполнять эту команду ежечасно с помощью cron, а также запускать ее из пользовательской команды из представления (т. Е. Когда они добавляют новый элемент, который нуждается в данных, я не хочу, чтобы они дождались следующего часа, чтобы перевернуть см. результаты). Вопрос в том:

Как я могу настроить эту команду так, что если она уже запущена, она не будет выполнена? Есть ли место, где я могу занести переменную, которая может быть проверена скриптом перед выполнением? Моя лучшая идея состоит в том, чтобы на некоторое время вывести командный монитор stdout, чтобы убедиться, что ничего не выполняется, но это похоже на взлом в лучшем случае. Это единственная задача, которая будет работать в фоновом режиме.

Я в основном стараюсь избегать использования Сельдерея здесь.

2 Solutions collect form web for “Выполнение команды управления монитором в Django”

Оберните свою функцию чтения в блок try / except, отмечающий внешнюю memoization для управления исполнением. Я использую Redis в качестве примера:

from redis import Redis try: r_client = Redis() # assuming standard settings sentinel = r_client.incr("my_sentinel") if sentinel == 1: run_command() else: r_client.decr("my_sentinel") except Exception as e: r_client.decr("my_sentinel") raise e 

Вы можете создать файл с именем «i_am_running.log» в начале вашей команды управления и удалить его в конце, если он. При выполнении той же команды управления проверьте наличие. В случае отсутствия – идите дальше. В противном случае – прервать.

  • Как запрашивать из базы данных по возрасту в Django, когда день рождения хранится в виде полей year / month / day
  • Невозможно изменить шаблон администратора Django
  • Проектирование / компоновка FS для крупных проектов django
  • Django Rest Framework - отсутствует статический каталог
  • ForeignKey создает ограничения в Django
  • Web 2.0 Ecosystem / Stack
  • Официальный учебник Django для абсолютного новичка абсолютно не удался!
  • IPython в Windows - без подсветки или автозаполнения
  • Как установить правильное значение для настройки Django ROOT_URLCONF в разных ветвях
  • Сравнение тегов js и template
  • Добавление дополнительных полей в регистрационную форму django
  • Python - лучший язык программирования в мире.