gpt4 book ai didi

ruby-on-rails - RSpec:如何测试使用并行的方法(PG::ConnectionBad 错误)

转载 作者:数据小太阳 更新时间:2023-10-29 07:08:05 24 4
gpt4 key购买 nike

在我的应用程序中,我有几个生成器类,它们负责获取从外部 API 请求接收的数据,并将资源构建/保存到数据库中。我正在处理大量数据,并已实现并行 gem 以通过使用多个进程来加快处理速度。

但是,我发现对使用 Parallel 的方法的任何测试都会失败并出现相同的错误:

 ActiveRecord::StatementInvalid:
PG::ConnectionBad: PQconsumeInput() server closed the connection unexpectedly
This probably means the server terminated abnormally
before or while processing the request.

这是被测试的代码示例:

class AirportBuilder < Resource
def build_from_collection
Parallel.each(object_producer, in_processes: 24) do |params|
instance = Airport.find_or_initialize_by(fsid: params[:fs])
build!(instance, params)
end
end
end

我已经对此进行了一些搜索,但 Google 中的所有结果都与使用多个线程/进程来使测试套件运行得更快有关,这是一个不同的问题。

关于如何在不导致 PG 错误的情况下有效地测试它有什么想法吗?我意识到我可能需要对某些内容进行 stub ,但我不太确定要对哪些 stub 进行 stub ,但仍然需要进行有意义的测试。

提前感谢任何可能提供帮助的人!

最佳答案

您使用的数据库连接数是否超过为您的测试数据库配置的连接数?也许尝试将其设置为等于脚本需求的池大小(看起来像 24)?

测试:
适配器:随便
主持人:随便
用户名:随便
密码:随便
数据库:随便
游泳池:24

请注意,您可能还想对 the default ActiveRecord connection pool 做一些数学运算. this Heroku dev center article 中的一些有用信息.

关于ruby-on-rails - RSpec:如何测试使用并行的方法(PG::ConnectionBad 错误),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31589643/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com