Ruby sidekiq多线程操作
我有一个任务需要很长时间,所以我把它分为三部分,并希望启动三个线程来同时处理它(我确保不会访问相同的变量或任何东西,别担心,他们严格处理自己的数据集) 据我所知,sidekiq为每个工作人员启动了一个新线程,因此我创建了三个工作人员Ruby sidekiq多线程操作,ruby,multithreading,ruby-on-rails-4,sidekiq,Ruby,Multithreading,Ruby On Rails 4,Sidekiq,我有一个任务需要很长时间,所以我把它分为三部分,并希望启动三个线程来同时处理它(我确保不会访问相同的变量或任何东西,别担心,他们严格处理自己的数据集) 据我所知,sidekiq为每个工作人员启动了一个新线程,因此我创建了三个工作人员importer,importer2,importer3,都在app/workers中。在我的一个控制器中,我有以下代码: Importer.perform_async(arrays[0], date) Importer2.perform_async(arrays[1
importer
,importer2
,importer3
,都在app/workers
中。在我的一个控制器中,我有以下代码:
Importer.perform_async(arrays[0], date)
Importer2.perform_async(arrays[1], date)
Importer3.perform_async(arrays[2], date)
render json: 1
我的问题是:这是处理这个问题的最好方法吗
奇怪的是,a)对控制器的请求将花费如此长的时间来呈现1
,在sidekiq日志中,我可以看到导入器JID-639e67d2aa20cce885690dc7信息:start
和导入器2
的相同,但不是3,然后sidekiq就退出了终止了
当我重新启动sidekiq时,我得到了Importer3。。。启动
,然后它是唯一工作的(它更新DB值,并且是唯一更改的)`
想知道为什么吗?你确定你有足够的内存吗?也许这会有帮助:你确定你有足够的内存吗?也许这会有帮助:你确定你有足够的内存吗?也许这会有帮助:同意。你做的事情是正确的,但我你在做正确的事情,但听起来你的内存不足。同意。你在做正确的事情,但听起来你的内存不足。同意。你在做正确的事情,但听起来你的内存不足。同意。你在做正确的事情,但听起来你的内存不足。