Ruby on rails Druby和ActiveRecord的线程问题

Ruby on rails Druby和ActiveRecord的线程问题,ruby-on-rails,ruby,druby,Ruby On Rails,Ruby,Druby,我有一个rails应用程序和一个单独的druby进程。这个过程给了我一些方法,在每个druby方法的第一行有一个对ActiveRecord::Base.establish_connection的调用,其中db_名称取决于rails应用程序设置的参数。 有时进程会得到错误的数据库名称,我认为这可能是一个并发问题。可能是吗?有没有关于如何使其线程安全的想法 谢谢你的帮助! Roberto是的,这是一个并发问题 要修复它,您必须稍微更改您的体系结构,但我没有足够的信息 在后端运行的代码与在rails应

我有一个rails应用程序和一个单独的druby进程。这个过程给了我一些方法,在每个druby方法的第一行有一个对ActiveRecord::Base.establish_connection的调用,其中db_名称取决于rails应用程序设置的参数。 有时进程会得到错误的数据库名称,我认为这可能是一个并发问题。可能是吗?有没有关于如何使其线程安全的想法

谢谢你的帮助!
Roberto是的,这是一个并发问题

要修复它,您必须稍微更改您的体系结构,但我没有足够的信息

在后端运行的代码与在rails应用程序中运行的代码相同吗? 不同的数据库使用相同的模型吗? 你有多少个不同的数据库?这个数字增长了吗? 基本上,如果您有少量固定数量的数据库,最简单的方法就是使用不同的ruby进程

如果您有具有不同模型的不同数据库,您可以设想使用不同的基类:

AppA < ActiveRecord::Base
Model1 < AppA
Model2 < AppA

AppB < ActiveRecord::Base
Model3 < AppB

到不同的数据库。

是的,这是一个并发问题

要修复它,您必须稍微更改您的体系结构,但我没有足够的信息

在后端运行的代码与在rails应用程序中运行的代码相同吗? 不同的数据库使用相同的模型吗? 你有多少个不同的数据库?这个数字增长了吗? 基本上,如果您有少量固定数量的数据库,最简单的方法就是使用不同的ruby进程

如果您有具有不同模型的不同数据库,您可以设想使用不同的基类:

AppA < ActiveRecord::Base
Model1 < AppA
Model2 < AppA

AppB < ActiveRecord::Base
Model3 < AppB

到不同的数据库。

您也可以添加全局互斥来序列化drb请求,但随后会限制速度。您也可以添加全局互斥来序列化drb请求,但随后会限制速度。