Django事务是否使我的非db操作成为原子?

时间:2010-04-20 20:45:15

标签: django transactions

我有一个将文件写入磁盘的功能。使用并发服务器,可能(甚至可能)同时由两个线程调用此函数。查看源代码,似乎在django.db.transaction中包装我的函数将使我的db操作我的非db操作保持原子状态。这是对的吗?

更新:我真正想要的不仅仅是一个是或否的答案,而是一个解释或评论django.db.transaction中enter_transaction_management正在发生的线程内容的链接.py正在做。

2 个答案:

答案 0 :(得分:0)

不,它不会。事务特定于数据库,其处理方式与IPC锁定的处理方式大不相同。

您应该为要写入的文件添加进程标识符,以确保它是唯一的。否则lock the file以确保您是唯一写信的人。

答案 1 :(得分:0)

通过“Django交易”,我认为你的意思是django.db.transactions中的交易?

而且,如果是这样的话 - 没有。他们属于数据库事务(即,他们只会发出BEGIN然后COMMITROLLBACK