在原子上下文上运行时,我的方法之一不起作用。我想问一下Django是否正在运行事务。
该方法可以创建线程或进程,并将结果保存到数据库。这有点奇怪,但是当可以使用进程时会带来巨大的性能优势。
我发现特别是Django的过程有些粗略。我知道,如果该方法选择将结果保存在进程中并且该方法在原子上下文上运行,则Django将引发异常。
如果我可以检查原子上下文,则可以立即抛出异常(而不是得到奇数错误)或强制该方法仅创建线程。
我找到了is_managed()
方法,但是根据this question,它已在Django 1.8中删除。
最佳答案
根据this ticket,有几种方法可以检测到此情况:not transaction.get_autocommit()
(使用公共API)或transaction.get_connection().in_atomic_block
(使用私有API)。