Изменения в данных БД, не отраженные в наборе запросов 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

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


person PKaura    schedule 31.07.2011    source источник


Ответы (1)


Это не имеет отношения к кешированию. Это связано с транзакциями.

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

person Daniel Roseman    schedule 31.07.2011
comment
Большое спасибо, Даниэль, Непрерывно работающий скрипт по умолчанию запускается в рамках одной транзакции, в этом и заключалась проблема. Все, что мне нужно было сделать, это вручную зафиксировать транзакцию на каждой итерации, и изменения начали появляться. - person PKaura; 05.08.2011