0

我有一個模型在創建時向外部Web服務發送HTTP請求,以便在保存之前查找要添加的某些信息。交易中的HTTP請求?

目前我正在做一個before_create回調。我最近在回調happen within database transactions之前/之後得知。

我是否會因爲這樣做而限制數據庫吞吐量等任何問題?在發送http請求之前提交記錄並在返回時更新記錄會更好嗎?

回答

1

只要你保持一個事務處於打開狀態,它所獲取的所有鎖都是活動的。如果你有一個外部源的調用可能會讓你停留很長時間,請確保在同一個事務中不要有任何不相關的鎖。

換句話說:不要把其他東西放到同一個事務中。

如果您在查找附加信息之前不介意新行可見,那麼您可能只是提交併稍後更新該行。

或者您甚至在啓動事務之前從外部Web服務獲取信息。這將是數據庫最乾淨/最快的解決方案。

PostgreSQL lock types
How to view locks