ruby запускать параллельные задачи в фоновом режиме и возвращать результаты без отображения stdout? - PullRequest
0 голосов
/ 17 мая 2018

Я работаю над сценарием начальной загрузки шеф-повара и пытаюсь заставить его работать в системах Windows или POSIX.В нем я пытаюсь запросить у chef-сервера роли и окружение.В окнах запросы могут занимать до 30 секунд, поэтому я пытаюсь запустить их параллельно и в фоновом режиме и сохранить значения, которые будут вызваны позже, когда я буду просить пользователя ввести другие данные, а затем в конечном итоге выбрать роль исреда возвращается из запросов.На всю жизнь я не могу понять, как заставить запросы запускаться в фоновом режиме без паузы основной программы.

Вот что у меня так далеко:

chef_role = `knife search role '*:*' -i`.split.map { |i| { name: i } }.sort_by! { |n| n[:name] }
chef_env = `knife search environment '*' -i`.split.map { |i| { name: i } }.sort_by! { |n| n[:name] }
# Parallel fetch chef resources
knife_search = [chef_role, chef_env]
par = []
i = 0
knife_search.each do |search|
  par[i] = Thread.new do
    search
  end
  i += 1
end
par.each(&:join)
puts "Test1 = #{chef_role.inspect} | Test2 = #{chef_env.inspect}"

1 Ответ

0 голосов
/ 17 мая 2018

Возможно, вы хотите использовать один из API-интерфейсов, таких как chef-api для Ruby или PyChef для Python.

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