【发布时间】:2016-12-01 15:21:16
【问题描述】:
我有两个模型
LongJob(models.Model):
pass
Report(models.Model):
job = models.OneToOneField('LongJob', related_name='report')
我首先在一个视图中创建一个作业:
job = LongJob.objects.create()
然后我将job 传递给 Celery 任务并获取或创建报告:
@shared_task
def celery_task(job):
report, created = Report.objects.get_or_create(job=job)
有时,get_or_create 调用会引发以下IntegrityError:
IntegrityError: insert or update on table "report" violates foreign key constraint "job_id_c7400e5ba78c00c_fk_longjob_id"
DETAIL: Key (job_id)=(120057) is not present in table "longjob".
错误发生后,我检查LongJob 表中是否存在ID 应该不存在的作业对象,我确实找到了它。这怎么可能 ?
数据库是 Postgresql 9.4。
【问题讨论】:
标签: django postgresql celery