Убедитесь, что задача celery завершается после фиксации базы данных

У меня есть приложение Django, в котором приложение создает задачу celery для обработки пользовательского ввода, проверки хода выполнения задачи и обновления страницы, как только задача будет выполнена.

Я хорошо знаю, что задача celery должна запускаться только после фиксации обрабатываемой записи, используя код типа

transaction.on_commit(lambda: my_task.apply_async(args=(pk,)))

Однако, когда задача завершается с чем-то вроде

@celery.task
def my_task(pk):
    record = Record.objects.get(pk)
    # do something
    record.save()

Приложение django по-прежнему получает старое значение записи при чтении из базы данных (Record.objects.get(pk)), вероятно, потому что база данных еще не была обновлена. Как сделать так, чтобы задача celery завершалась только после фиксации транзакции? Я пытался добавить transaction.commit() после record.save(), но, похоже, это не помогает.

Вернуться на верх