Параллельный запуск скриптов ruby - PullRequest
0 голосов
/ 14 сентября 2018

Допустим, у меня есть два сценария 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% медленнее). Есть ли способ запустить их одновременно и сохранить высокую производительность?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...