在现有数据库事务之外运行django查询

时间:2013-08-30 09:38:39

标签: django postgresql logging transactions soa

我参与的项目依赖于外部服务(SOA),默认情况下会启用事务管理。但是,如果出现错误,回滚将导致一些关键数据丢失,如“支付捕获日志记录”(例如,如果代码在捕获后失败)。

在当前事务之外运行查询是否有实用的方法?无论出现什么异常,我总是希望记录外部呼叫。我不想为约定实现外部日志服务。保存点不会带你到那里,也许那个时刻需要另一个数据库连接?

1 个答案:

答案 0 :(得分:2)

  

是否有实用的方法在当前事务之外运行查询?

PostgreSQL本身并不支持你想要的东西,autonomous (sub)transactions

您可以使用dblink模拟它们,尽管是笨拙的。 dblink完全符合您的建议;它从一个PostgreSQL服务器连接到另一个服务器。连接可以是连接到自己的服务器。

如果您可以在应用程序级别执行此操作,那么这样做通常会更好,但dblink肯定是一种选择。