Рубиновый эквивалент фонового планировщика?

#python #ruby

#python #ruby

Вопрос:

У меня есть этот код на Python, который я пытаюсь переписать на ruby:

 from apscheduler.schedulers.background import BackgroundScheduler

# Set up the loop
scheduler = BackgroundScheduler()

job = scheduler.add_job(lambda: person.do_thing, 'interval', seconds=FREQUENCY)

 

Как это сделать в Ruby? Обратите внимание, что у человека есть какое-то состояние, например, имя, возраст, dob и т. Д.

Ответ №1:

Если вы находитесь на рельсах, вам следует рассмотреть ActiveJob. Он поддерживает множество бэкэндов. https://api.rubyonrails.org/classes/ActiveJob/QueueAdapters.html

В противном случае, вот Ruby-эквивалент вашего кода.

 require 'concurrent'

executor = Concurrent::ThreadPoolExecutor.new

person = { name: 'Bob' }
executor.post(person) { |p| puts "Processing #{p.inspect}" }

executor.shutdown
executor.wait_for_termination
 

Видишь https://ruby-concurrency.github.io/concurrent-ruby/master/Concurrent/ThreadPoolExecutor.html для получения более подробной информации.