我的方法之一在原子上下文中运行时不起作用。我想询问 Django 是否正在运行事务。
该方法可以创建线程或进程并将结果保存到数据库。这有点奇怪,但是当可以使用进程时,会带来巨大的性能优势。
我发现 Django 的进程有点粗略。我知道如果该方法选择将结果保存在进程中并且该方法在原子上下文上运行,Django 将引发异常。
如果我可以检查原子上下文,那么我可以立即抛出异常(而不是出现奇怪的错误)或强制该方法仅创建线程。
我找到了 is_management()
方法,但根据 this question它已在 Django 1.8 中删除。
最佳答案
根据this ticket有几种方法可以检测到这一点:not transaction.get_autocommit()
(使用公共(public) API)或 transaction.get_connection().in_atomic_block
(使用私有(private) API)。
关于python - 检查原子上下文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36686867/