Celery Task Fails with "Object Does Not Exist" Error Despite Using Auto-Commit in Django

В моем Django-приложении я столкнулся с редкой проблемой, когда задача Celery, вызванная через apply_async сразу после создания объекта в методе сохранения модели, не срабатывала, поскольку не могла найти только что созданный объект. Такая проблема возникла только один раз, что особенно озадачивает, учитывая режим автокоммита Django, который должен немедленно фиксировать новый объект в базе данных. Ниже приведена упрощенная версия кода, в котором возникла проблема:

from django.db import models из myapp.tasks import process_new_object

class MyModel(models.Model):
     ....

class AnotherModel(models.Model):
     ....

    def save(self, *args, **kwargs):
        new_obj = MyModel.objects.create(name="Newly Created Object")
        process_new_object.apply_async(args=[new_obj.pk], countdown=5)
        return super().save(*args, **kwargs)




@shared_task
def process_new_object(obj_id):
    try:
        obj = MyModel.objects.get(pk=obj_id)
        ...
    except MyModel.DoesNotExist:
        pass

Какие могут быть потенциальные причины того, что задача Celery иногда не может найти только что созданный объект, несмотря на задержку и автокоммит Django?

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