Как реализовать серверное приложение Django, которое обрабатывает базу данных как очередь

#database #django #queue

#База данных #django #очередь

Вопрос:

Предположим, у меня в базе данных 100 записей, и я хочу применять метод к 5 записям каждую минуту. Можно ли обрабатывать базу данных как очередь, чтобы после того, как первые 5 записей применят метод, они будут помещены в нижнюю часть базы данных, а второй квинтет будет помещен в первый квинтет и так далее?

Ответ №1:

Я думаю, вы ищете фоновую очередь процессора / задач, такую как Celery.

По сути, вы бы настроили задачу, которая будет выполняться каждые 5 минут. Затем в этой задаче вы должны извлечь 5 записей, которые хотите отредактировать. Хороший способ сделать это — иметь datetime в модели, которая обновляется при каждом сохранении с использованием auto_now параметра for DateTimeField .

Комментарии:

1. Это было именно то, что я искал. Но я не понимаю одного: если я использую DateTimeField предложенный вами метод, не придется ли мне сканировать всю базу данных каждые 5 минут, чтобы найти записи с наибольшей разницей между CurrentTime ними и их DateTimeField ?

2. Вы можете поместить в нее индекс и получить самую старую дату. Таким образом, это не сравнение, и данные должны быть доступны довольно рано при поиске, нет? Редактировать: в вашем первоначальном вопросе вы сказали, что у вас будет только 100 элементов. Это не вызовет никаких проблем с производительностью. Я предполагаю, что фактическое приложение немного больше.