Задачи Celerybeat получают ту же информацию, даже если она изменилась. (возможно кэширование) Как я могу отключить это - PullRequest
0 голосов
/ 18 января 2019

У меня есть задание в ритме сельдерея, которое запускается каждые 2 минуты. Он принимает цикл if, основанный на существовании объекта БД self.dbObject = Patch.find_by_status('READY') Я включаю рабочий, и код работает нормально. Но когда я переключаю БД из состояния READY в любое другое состояние, это не отражается при следующем запуске. Сельдерей кеширует эти данные где-нибудь? Я не использую бэкэнд-конфиг для сельдерея. Если это кеширование, можно ли как-то его отключить или удалить?

Помогает перезагрузка рабочего. но мое приложение не может себе этого позволить.

def petchme(self):
    self.dbObject = Patch.find_by_status('READY')
    if self.dbObject:
        print('Patch this')
    else:
        print('No patchgroup(s) in pipeline')

Ответы [ 2 ]

0 голосов
/ 22 января 2019

Спасибо @ 2ps, это была проблема. Мой DbObject не получал последние данные из БД, во-первых, добавление db.session.commit () помогло решить проблему.

def petchme(self):
    db.session.commit()
    self.dbObject = Patch.find_by_status('READY')
    if self.dbObject:
        print('Patch this')
    else:
        print('No patchgroup(s) in pipeline')
0 голосов
/ 21 января 2019

Кеширует ли сельдерей эти данные где-нибудь?

Нет, сельдерей не кеширует ваши обращения к базе данных. Скорее всего, ваш Patch класс выполняет какое-то кэширование. Если вы действительно хотите, вы можете даже установить сельдерей на киллеров, выполнив некоторое количество задач (например, 1).

...