Какие-либо системы очереди заданий, которые позволяют планировать задания по дате? - PullRequest
1 голос
/ 18 августа 2010

У меня есть приложение Django.

Одна из моих моделей выглядит так:

class MyModel(models.Model):

    def house_cleaning(self):
    // cleaning up data of the model instance

Каждый раз, когда я обновляю экземпляр MyModel, мне нужно было очистить данные через N дней. Поэтому я хотел бы запланировать работу, чтобы позвонить

this_instance.house_cleaning() 

N дней с этого момента.

Есть ли какая-либо очередь заданий, которая позволила бы мне:

  • Хорошо интегрируйся с Django - позволь мне вызвать метод для отдельных экземпляров модели
  • Запускать только те задания, которые запланированы на сегодня
  • Идеально обрабатывает сбои изящно

Спасибо

Ответы [ 2 ]

3 голосов
/ 18 августа 2010

Джанго-хронограф может подойти для вашего случая использования.Если вы напишите свои задания по очистке в виде команд django, то вы запланируете их запуск на некоторое время.Он работает с использованием Unix Cron за сценой.

2 голосов
/ 18 августа 2010

Есть ли причина, по которой работа cron не будет работать? Или что-то вроде django-cron , которое ведет себя так же? довольно просто писать автономные сценарии Django. Если вы хотите запустить уборку дома при изменении модели в течение определенного количества дней, почему бы не создать флаг даты в модели, который будет установлен на N дней в будущем, когда необходимо запланировать задание? Вы можете запускать сценарий ежедневно, который извлекает все записи с датой <= сегодня, вызывает метод экземпляра <code>house_cleaning() и затем очищает поле даты. Если во время процесса возникает исключение, его достаточно легко зарегистрировать или отправить по электронной почте.

...