꽤 오랜 시간이 지나면 입력 데이터를 저장할 스레드에서 작업을 실행하고 있습니다. Django는 일반적으로 그 동안 변경 될 수있는 전체 객체를 저장합니다. 또한 트랜잭션이 실패하거나 다른 작업을 차단하기 때문에 트랜잭션을 실행하고 싶지 않습니다. 내 솔루션은 데이터를 다시로드하고 결과를 저장하는 것입니다. 이것은 갈 길입니까 아니면 낙관적 인 잠금 체계, 부분적으로 저장해야합니까 아니면 내가 사용해야 할 다른 것이 있습니까?Django 장기 실행 작업 - 데이터베이스 일관성
내 솔루션 : 당신이 긴 작업을하고 다른 작업을 차단하지 않으려면
with transaction.atomic():
obj = mod.TheModel.objects.get(id=the_id)
# Work the task
with transaction.atomic():
obj = mod.TheObject.objects.get(id=obj.id)
obj.result = result
obj.save()
좋은 프로젝트. 트랜잭션/낙관적 인 잠금 또는 부분 저장에 도움이되는 셀러리의 기능은 표시되지 않습니다. 트랜잭션을 실행하거나 다시로드 할 필요가 있습니다. 내가 놓친 게 있니? – Ganwell