Изменения в данных БД, не отраженные в наборе запросов Django в скрипте с непрерывным циклом

Я использую ORM Django для получения новых добавленных записей из БД и передачи их в очередь сообщений. Я делаю это в бесконечном цикле while, ПРОБЛЕМА в каждой итерации цикла. Я получаю один и тот же набор запросов, даже когда добавляю / удаляю / редактирую записи, когда этот скрипт выполняется,

Код выглядит так:

while True :
    sleep(10 seconds)
    # Below is the problem line, I get the same query-set every time in new_objects
    # even when I have added/deleted/edited entries while this daemon is running.
    new_objects = Model.objects.filter(some condition)

    # Process new_objects and send them to MQ
    .
    . and so on

Что я должен сделать, чтобы отразить последние данные в каждой итерации?

1 ответ

Решение

Это не имеет ничего общего с кэшированием. Это связано с транзакциями.

Непрерывно работающий скрипт по умолчанию выполняется в пределах одной транзакции и поэтому никогда не увидит изменений вне этой транзакции. Вам нужно будет начинать новую транзакцию вручную на каждой итерации - посмотрите, как это сделать, в документации по транзакции.

Другие вопросы по тегам