Как получить задание из сельдерея, чтобы спасти модель Джанго прямо сейчас? - PullRequest
0 голосов
/ 26 мая 2019

У меня есть задача сельдерея, которая выполняется в течение пяти минут и каждую секунду пингует внешний сервис для обновлений. Если он обнаруживает обновление, он должен немедленно сохранить обновление в модели django.

Моя проблема в том, что model.save () не происходит сразу. Вместо этого это происходит, только когда истекли пять минут и задача сельдерея заканчивается.

Как я могу заставить сохранение происходить немедленно?

Код моей задачи ниже. Я пытался использовать атомарные транзакции, но это до сих пор не работает.

class CheckForUpdates(PeriodicTask):
    run_every = 300

    def run(self, queue_name='unique_queue'):
        end_task_time = _at_five_minutes()
        while time.time() < end_task_time:
            _wait_for_one_second()
            result = _check_for_update()
            if _update_was_found(result):
                update = json.loads(result.body)
                logger.info("response body: ", update)
                with transaction.atomic():
                     model.save()

Что мне нужно добавить, чтобы модель.save () выполнялась сразу?

...