Python Django模型没有';无法保存到芹菜任务内的数据库

Python Django模型没有';无法保存到芹菜任务内的数据库,python,django,postgresql,redis,celery,Python,Django,Postgresql,Redis,Celery,我遇到了一个非常糟糕的情况。我有以下设置。 我有一个django模型,它用 我有一个芹菜任务,发送电子邮件,然后推进FSM的主要对象的状态。从芹菜任务的角度来看,对象“似乎”被保存。但是从django主进程的角度来看,对象没有被更新。奇怪的是,辅助对象被正确地保存到数据库中,然后可以从主django进程访问 我在芹菜任务的对象上显式调用了.save(),并且date\u last\u modified=models.DateTimeField(auto\u now=True,null=True)

我遇到了一个非常糟糕的情况。我有以下设置。 我有一个django模型,它用

我有一个芹菜任务,发送电子邮件,然后推进FSM的主要对象的状态。从芹菜任务的角度来看,对象“似乎”被保存。但是从django主进程的角度来看,对象没有被更新。奇怪的是,辅助对象被正确地保存到数据库中,然后可以从主django进程访问

我在芹菜任务的对象上显式调用了
.save()
,并且
date\u last\u modified=models.DateTimeField(auto\u now=True,null=True)
字段在芹菜任务中的时间戳比主线程的时间戳晚,尽管我不确定这是否表示什么,也就是说,它可能已被更新,但更新尚未刷新到数据库中

我使用的是django 1.5.1, postgresql 9.3.0, 芹菜v3.1.0, Redis 2.6.10

像这样跑芹菜
$Cellery-跟踪人员-E-B-l信息


如果您能了解发生这种情况的原因,我们将不胜感激。

您是否在保存后获得了该对象?也就是说,不只是查看保存前获得的实例?

事务如何?您可以尝试设置
CELERY\u EAGER\u PROPAGATES\u EXCEPTIONS=True
并使用
-l DEBUG
运行芹菜,以查看model
.save()调用后是否发生任何错误


还要注意并发更新。当一个进程读取模型时,芹菜会读取并保存同一个模型,如果初始进程调用
models.save()
以后它会覆盖其中的所有字段。

我在Django 1.5中也遇到过类似的问题

我猜这是因为Django没有立即将更改提交到数据库

添加

    'OPTIONS': {
        'autocommit': True
    }
数据库
设置为我解决了这个问题


Django 1.6+中不存在问题,因为默认设置是
autocommit

在我的情况下,并发更新是一个问题,安装帮助。谢谢现在Django有
.save(updated_fields=…)
,可以用来代替Django保存更改包