Изменения в данных БД, не отраженные в наборе запросов Django в скрипте с непрерывным циклом - PullRequest
2 голосов
/ 31 июля 2011

Я использую ORM Джанго для получения новых добавленных записей из БД и передачи их в очередь сообщений. Я делаю это в бесконечном цикле 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 Ответ

4 голосов
/ 31 июля 2011

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

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

...