【问题标题】:HTTP requests in transactions?事务中的 HTTP 请求?
【发布时间】:2012-03-26 10:07:31
【问题描述】:

我有一个模型,它在创建时向外部 Web 服务发送 HTTP 请求,以便在保存之前找出一些要添加的信息。

目前我正在 before_create 回调中执行此操作。我最近了解到回调之前/之后happen within database transactions

我是否会通过这样做来解决任何问题,例如限制数据库吞吐量?在发送http请求之前提交记录,然后在返回时更新记录会更好吗?

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3 postgresql activerecord transactions


    【解决方案1】:

    只要您保持事务打开,它获取的所有锁都处于活动状态。如果您调用的外部源可能会使您长时间停滞,请确保不要在同一事务中使用任何不相关的锁。

    换句话说:不要将其他任何东西放入同一个事务中。

    如果您不介意在查找其他信息之前显示新行,您可能只需提交并稍后更新该行。

    或者您甚至在开始交易之前就从外部 Web 服务获取信息。这将是数据库最干净/最快的解决方案。

    PostgreSQL lock types.
    How to view locks.

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-08-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多