Допустим, у меня есть два сценария ruby - a.rb и b.rb. Оба веб-скребка используются для разных страниц. Они могут работать много, много часов, и я хотел бы запустить их одновременно. Чтобы сделать это, я попытался запустить их с помощью третьего скрипта, используя гем «обещание» со следующим кодом:
def method_1
require 'path to my file\a'
end
def method_2
require 'path to my file\b'
end
require 'future'
x=future{method_1}
y=future{method_2}
x+y
Однако это решение выдает ошибку (ниже), и выполняется только один скрипт.
An operation was attempted on something that is not a socket.
(Errno::ENOTSOCK)
Я также пытался играть с классом Thread:
def method_one
require 'path to my file\a'
end
def method_two
require 'path to my file\b'
end
x = Thread.new{method_one}
y = Thread.new{method_two}
x.join
y.join
И это дает мне ту же ошибку, что и для самоцвета "обещание".
Я также запускал эти скрипты в отдельных оболочках - тогда они работают одновременно, но производительность намного хуже (примерно на 50% медленнее).
Есть ли способ запустить их одновременно и сохранить высокую производительность?