2010-04-20 2 views
0

파일을 디스크에 쓰는 기능이 있습니다. 동시 서버를 사용하면이 함수를 두 스레드가 동시에 호출 할 수 있습니다 (심지어 있음). 소스 코드를 살펴보면 django.db.transaction에서 내 함수를 래핑하면 내 db 작업이 모두 유지됩니다. 내 비 db 작업은 원 자성입니다. 이 올바른지?Django 트랜잭션은 비 db 오퍼레이션을 원자 적으로 만드나요?

UPDATE : 정말 다만 예 또는 아니오 대답하지만, 설명에 대한 링크 또는 정확히 django.db.transaction.py에서 enter_transaction_management에서 진행 스레드 물건이 무엇을하고 있는지에 대한 의견이 싶은 무엇 .

+0

이 질문을 되돌아 보니 정말 원자라는 단어를 한정해야했습니다. 나는 어떤 장고 행동이 그 사이에 일어날 수 있는지 아닌지에 관심이있었습니다. 어떤 일이 잘못되면 모든 것이 되돌아 오게되는 것이 아닙니다. –

답변

0

"Django transaction"으로, 거래가 django.db.transactions 인 것으로 가정합니다.

그리고 그 경우라면 - 아니요. 그들은 만 데이터베이스 트랜잭션과 관련이 있습니다 (예 : BEGIN, COMMIT 또는 ROLLBACK).

0

아니요. 트랜잭션은 데이터베이스에 고유하며 IPC 잠금과는 다르게 처리됩니다.

작성자가 고유 한 것인지 확인하기 위해 작성중인 파일에 프로세스 식별자를 추가해야합니다. 그렇지 않은 경우 lock the file을 사용하여 작성자 만 확인하십시오.

관련 문제