检查原子上下文
Check for atomic context
当 运行 在原子上下文中时,我的一个方法不起作用。我想问 Django 是否正在 运行 交易。
该方法可以创建线程或进程并将结果保存到数据库。这有点奇怪,但是当可以使用进程时会有巨大的性能优势。
我发现 Django 的流程有些粗略。我知道如果方法选择将结果保存在进程中并且方法在原子上下文中 运行,Django 将引发异常。
如果我可以检查原子上下文,那么我可以立即抛出异常(而不是得到奇怪的错误)或强制该方法只创建一个线程。
我找到了 is_managed()
方法,但根据 this question 它已在 Django 1.8 中删除。
根据 this ticket 有几种方法可以检测到这一点:not transaction.get_autocommit()
(使用 public API)或 transaction.get_connection().in_atomic_block
(使用私有API).
当 运行 在原子上下文中时,我的一个方法不起作用。我想问 Django 是否正在 运行 交易。
该方法可以创建线程或进程并将结果保存到数据库。这有点奇怪,但是当可以使用进程时会有巨大的性能优势。
我发现 Django 的流程有些粗略。我知道如果方法选择将结果保存在进程中并且方法在原子上下文中 运行,Django 将引发异常。
如果我可以检查原子上下文,那么我可以立即抛出异常(而不是得到奇怪的错误)或强制该方法只创建一个线程。
我找到了 is_managed()
方法,但根据 this question 它已在 Django 1.8 中删除。
根据 this ticket 有几种方法可以检测到这一点:not transaction.get_autocommit()
(使用 public API)或 transaction.get_connection().in_atomic_block
(使用私有API).