Python Django芹菜:芹菜中不存在模型对象';s任务(原子_请求=False)

Python Django芹菜:芹菜中不存在模型对象';s任务(原子_请求=False),python,django,django-orm,django-celery,celery-task,Python,Django,Django Orm,Django Celery,Celery Task,我获取的MyModel匹配查询不存在。在进入芹菜任务之前获取我正在创建的对象时出错。我正在从我的APIView中调用该任务 my_model_obj = MyModel(x=1, y=2) my_model_obj.save() my_celery_task.delay(my_model_obj.id) 在我的任务职能范围内,我正在做: @task() def my_celery_task(my_model_id): MyModel.objects.get(id=my_model_id

我获取的
MyModel匹配查询不存在。
在进入芹菜任务之前获取我正在创建的对象时出错。我正在从我的
APIView
中调用该任务

my_model_obj = MyModel(x=1, y=2)
my_model_obj.save()
my_celery_task.delay(my_model_obj.id)
在我的任务职能范围内,我正在做:

@task()
def my_celery_task(my_model_id):
    MyModel.objects.get(id=my_model_id)
在Django的
数据库
配置中,我没有
原子_请求
参数。因此,默认情况下,它应该为False

我相信这是因为Django甚至在数据实际保存到DB之前就已经从模型对象释放了控制。这是一个间歇性问题,有时会发生,有时工作正常


早些时候,我遇到了一个类似的问题,我正在更新模型对象的值,但更新后的值没有反映在芹菜的任务中。为了运行,我增加了10秒的延迟。但这一次我正在寻找一些永久的解决办法。有办法解决这个问题吗?我在Django或芹菜的配置中都没有任何配置参数来处理这种行为。

问题是因为我使用的是
TransactionMiddleware
,它做的事情与
@transaction.commit on\u success
decorator类似。如果您想继续使用
TransactionMiddleware
,您应该考虑在视图中对芹菜任务使用
@transaction.autocommit
装饰器,或者手动提交
@transaction.commit