我有一个ruby脚本,它将花费大约5个小时来处理我指定的人民币。问题:我们需要在2小时内拿到。
正在运行的代码是非线程安全的,并从xlsx输入输出csv文件. ...我以前从未使用过服务器场,但我猜非线程安全的ruby不是他们的东西(?)
简而言之,是否有任何类型的服务器群或服务或任何方法,我可以在不到一两个小时的时间内处理一个需要5个小时的ruby脚本?
我已经使用Heroku和Sidekiq做了类似的事情。Heroku为低成本计算提供免费和迷你计划,而Sidekiq gem让你可以将工作分块给几个工人,让他们同时运行,从而更快地完成。
你知道你的瓶颈在哪吗?它是XLSX文件的输入还是CSV的输出?如果是后者,请导入XLSV文件,并将其中的部分块发送给Sidekiq worker。
例如,您可以将XLSX文件分成每1000行的块,然后
rows.each do |row|
MySidekiqWorker.perform_async(row)
end
和你的MySidekiqWorker可能看起来像:
class MySidekiqWorker
include Sidekiq::Worker
def perform(row)
# append processed data to CSV
end
end
你的工人做所有繁重的工作,几乎肯定会比你的笔记本电脑没有这样的帮助快。