Par*_*rth 5 ruby thread-safety ruby-on-rails-3 puma
我有一个 Puma 服务器,配置为使用两个工作线程,每个工作线程有 16 个线程。并config.threadsafe!禁用允许使用 puma 的线程。
现在我有一个代码,我怀疑它没有使用线程安全,即使我已经Mutex在其中用作常量。我希望这段代码一次仅由一个 puma 线程执行,以避免并发问题,并使用Mutex它。
现在,我的问题是,
Mutex在多个工作人员上使用 puma 线程时是否可以注入线程安全?据我了解,工作线程是一个单独的进程,因此互斥锁不起作用。代码示例
class MyService
...
MUTEX = Mutex.new
...
def initialize
...
end
def doTask
MUTEX.synchronize do
...
end
end
end
Run Code Online (Sandbox Code Playgroud)
这MUTEX东西对我不起作用,所以我需要寻找另一种方法。请参阅下面的解决方案。
问题是,迪夫。puma 线程同时向外部远程 API 发出请求,有时远程 API 需要一些时间才能响应。
我想限制 API 请求总数,但由于上述问题而无法正常工作。
为了解决这个问题,
in-pogress当请求发送到外部 API 时,我将在其中创建一个新条目。processedin-progress在向外部 API 发出任何新请求之前,我正在检查总请求数。这样,我就可以限制从我的系统到外部 API 的请求总数。
| 归档时间: |
|
| 查看次数: |
1459 次 |
| 最近记录: |