Хорошо, я тестирую Stalker и Beanstalkd. Моя цель — разгрузить почтовые запросы на 500 КБ в очередь и обработать их асинхронно.
Пока в моем тестировании у меня есть этот очень простой пример.
#worker.rb
require 'stalker'
include Stalker
job 'hello' do |args|
puts "hi"
sleep 1
puts "hello"
end
и этот файл для добавления в очередь
# stalker.rb
require 'rubygems'
require 'stalker'
10.times do
Stalker.enqueue('hello')
puts 'queued'
end
Итак, в одном терминале я запускаю
$ stalk worker.rb
Работает 1 вакансии: [ привет ]
Потом запускаю сталкер файл
$ рубиновый stalker.rb
stalker выполняется почти мгновенно, как и ожидалось, поэтому никаких блокировок в этом нет.
но рабочий процесс занимает примерно 10 секунд. На самом деле я хочу, чтобы это было намного ближе к 1 секунде для этих 10 заданий, потому что я хочу, чтобы они выполнялись параллельно.
Любые рекомендации по следующему лучшему шагу, чтобы сделать это?
ОБНОВЛЕНИЕ: я понял, что могу запускать несколько рабочих с разных терминалов, и это будет обрабатывать очередь намного быстрее, например. 2 рабочих выполнят процесс примерно в два раза быстрее.