Делают ли транзакции Django мои не-db операции атомарными? - PullRequest
0 голосов
/ 21 апреля 2010

У меня есть функция, которая записывает файл на диск. Используя параллельный сервер, возможно (вероятно, даже), что эта функция может быть вызвана двумя потоками одновременно. Глядя на исходный код, кажется, что завершение моей функции в django.db.transaction будет сохранять обе мои операции с базами данных и мои операции не из базы данных атомарными. Это правильно?

ОБНОВЛЕНИЕ : Что мне действительно нужно, так это не просто ответ «да» или «нет», а ссылка на объяснение или комментарий о том, что именно происходит с потоком в enter_transaction_management в django.db.transaction. пи делает.

Ответы [ 2 ]

0 голосов
/ 21 апреля 2010

Под "транзакцией Django" я предполагаю, что вы имеете в виду транзакции в django.db.transactions ?

И, если это так - нет. Они только относятся к транзакциям базы данных (т. Е. Они будут выдавать только BEGIN, а затем COMMIT или ROLLBACK).

0 голосов
/ 21 апреля 2010

НЕТ, не будет. Транзакции специфичны для базы данных и обрабатываются значительно иначе, чем блокировка IPC.

Вы должны добавить идентификатор процесса в файл, в который вы пишете, чтобы убедиться, что он уникален. В противном случае заблокируйте файл , чтобы убедиться, что вы единственный, кто пишет в него.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...