【问题标题】:Rails ActiveRecord/Postgres single query timeout?Rails ActiveRecord/Postgres 单次查询超时?
【发布时间】:2020-05-10 19:28:43
【问题描述】:

我有一个日志查询(一个简单的INSERT),每个请求都会发生。

仅针对此请求(在每次页面加载时发生的请求),我想将限制设置为 500ms,以防数据库被锁定/缓慢/停机,它不会影响站点挂起的站点在等待连接/写入时。

有没有一种方法可以在每个查询的基础上以某种方式指定超时,如果它花费的时间太长,我可以中止 LoggedRequest.create!

我不想在我的配置中设置它,因为我有许多其他查询不应该有那么低的超时。

我正在使用 Postgres 11.7

我也不知道我对为整个会话设置超时的感觉如何,因为我不希望该连接从池中与其他无法设置超时的查询共享。

【问题讨论】:

    标签: ruby-on-rails ruby postgresql ruby-on-rails-6 postgresql-11


    【解决方案1】:

    Rails 6 introduces event based triggers 用于通知、日志等非常方便的功能,前提是您正在使用/有能力迁移到 Rails 6。这是一个有用的帖子,演示了为通知/日志创建基于事件的触发器:https://pramodbshinde.wordpress.com/2020/03/20/custom-events-tracking-with-activesupportnotifications-and-audited/

    如果由于某种原因您不能使用 Rails 6,也许这篇文章可以帮助您找到一些答案:https://evilmartians.com/chronicles/the-silence-of-the-ruby-exceptions-a-rails-postgresql-database-transaction-thriller

    如果我是你,我也可以考虑使用 AJAX 和对服务器的即发即弃 API 请求进行日志记录/对应用程序的正常运行不重要的任何内容。

    【讨论】:

    • 这在幕后使用了什么技术?
    • 它或多或少是一个 pub/sub 模型 FWIU。我需要深入研究它以了解其背后的科学。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-07-18
    • 1970-01-01
    • 1970-01-01
    • 2016-01-15
    • 2016-04-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多