#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 для получения более подробной информации.