Выполнение команды управления монитором в 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» в начале вашей команды управления и удалить его в конце, если он. При выполнении той же команды управления проверьте наличие. В случае отсутствия – идите дальше. В противном случае – прервать.

  • Ошибка импорта пространственных данных в GeoDjango - KeyError для поля mpoly
  • Разрешение кругового импорта в сельдерей и джанго
  • Формы Django one-to-many
  • Как я могу отфильтровать дату DateTimeField в Django?
  • В Django - Наследование модели - позволяет ли вы переопределить атрибут родительской модели?
  • Сохранение вики-версий в Google App Engine / Django - Изменение этого существующего кода
  • Django поиск списка файлов в ведре S3
  • Метод django __init__, вызывающий ошибку аргумента
  • Python - лучший язык программирования в мире.