2

我正在尝试编写一个具有 websockets 的 Sinatra 应用程序。我的 Sinatra 应用程序使用 Postgres 作为后端(无需 websocket 即可完美运行)。我添加eventmachineem-websocket为我的应用程序提供支持。一切都很好,除了在x请求数量之后,我得到一个 ActiveRecord ConnectionPool 超时。EventMachine 似乎没有释放数据库连接,但我以前从未使用过 EM,所以我不确定该怎么做。将这四种(AR + EM + PG + Sinatra)技术结合在一起而不让一切都付诸东流的最佳方式是什么?理想情况下,寻找某种 ConnectionPool gem 会导致 EM 在请求结束时释放数据库连接,或者类似的东西。

4

1 回答 1

1

ActiveRecord 有一个中间件ActiveRecord::ConnectionAdapters::ConnectionManagement,可以在请求后正确关闭连接。您可以激活它config.ru(我假设您使用config.ru文件启动 Sinatra 应用程序。如果您不熟悉使用 Sinatra,文档中config.ru一些关于它的 信息)。将此行放在下方require ...和上方run ...

use ActiveRecord::ConnectionAdapters::ConnectionManagement
于 2013-07-31T10:12:03.903 回答