Как создать и настроить свой веб-сервер на VDS (05 сен 2024)
Осенью самое время заняться установкой и тюнингом своего веб-сервера. Не правда ли?
How to do scheduling using Sidekiq Cron on Ruby on Rails
- Aleksej
- Автор темы
- Не в сети
- Модератор
Less
Больше
3 года 10 мес. назад - 3 года 10 мес. назад #1
от Aleksej
Кратенькое для новичков ЦУ относительно "how to start" в Ruby on Rails работу с sidekiq - планировщиком (хотя, вернее сказать, всего только "выполнителем") заданий с открытым исходным кодом, и sidekiq-cron (a scheduling add-on for Sidekiq). Active Job, фреймворк для объявления заданий и их запуска на разных бэкендах для очередей - по-умолчанию имеет, в том числе, и встроенный адаптер для бэкенда очередей Sidekiq.
Сложно прибавить что-либо существенное к документации Active Job, к которой и следует обратиться в первую очередь, "чтобы начать": она более чем несложна. Приведу навскидку произвольный пример реализации выполнения задачи посредством Active Job (например, будем постить твиты):
И сразу далее. Добавляем в Gemfile и бундлим:
Нам понадобится установленный и запущенный Redis:
ОК, далее:
Указываем Ruby on Rails адаптер бэкенда очередей (хотя для демонстрации данного примера рельсы нам, в общем-то, и не нужны):
и вот теперь:
...и sidekiq уже работает, выполняя предписанную задачу раз в минуту:
Aleksej создал тему: How to do scheduling using Sidekiq Cron on Ruby on Rails
Кратенькое для новичков ЦУ относительно "how to start" в Ruby on Rails работу с sidekiq - планировщиком (хотя, вернее сказать, всего только "выполнителем") заданий с открытым исходным кодом, и sidekiq-cron (a scheduling add-on for Sidekiq). Active Job, фреймворк для объявления заданий и их запуска на разных бэкендах для очередей - по-умолчанию имеет, в том числе, и встроенный адаптер для бэкенда очередей Sidekiq.
Сложно прибавить что-либо существенное к документации Active Job, к которой и следует обратиться в первую очередь, "чтобы начать": она более чем несложна. Приведу навскидку произвольный пример реализации выполнения задачи посредством Active Job (например, будем постить твиты):
Code:
def post(array_posts, tweet)
array_posts.each do |i|
PostingTweetsJob.perform_later(i, tweet)
end
end
Code:
# app/jobs/posting_tweets_job.rb
class PostingTweetsJob < ApplicationJob
queue_as :default
def perform(i, tweet)
config = {
consumer_key: tweet&.key,
consumer_secret: tweet&.secret,
access_token: tweet&.token,
access_token_secret: tweet&.token_secret
}
client = Twitter::REST::Client.new config
client.update(i)
puts 'Posted:' + Time.now.to_s + ' : ' + i
end
end
И сразу далее. Добавляем в Gemfile и бундлим:
Code:
gem 'sidekiq', '~>6.0.0'
gem "sidekiq-cron", "~> 1.1"
Нам понадобится установленный и запущенный Redis:
Code:
$ sudo service redis restart
ОК, далее:
Code:
# config/schedule.yml
my_first_job:
cron: "*/1 * * * *" #it will retrieve data every 1 minute
class: "HardWorker"
Code:
# config/initializers/sidekiq.rb
schedule_file = "config/schedule.yml"
if File.exist?(schedule_file) && Sidekiq.server?
Sidekiq::Cron::Job.load_from_hash YAML.load_file(schedule_file)
end
Code:
# app/jobs/hard_worker.rb
class HardWorker
include Sidekiq::Worker
def perform()
p 'Hello World!'
end
end
Указываем Ruby on Rails адаптер бэкенда очередей (хотя для демонстрации данного примера рельсы нам, в общем-то, и не нужны):
Code:
# config/application.rb
config.active_job.queue_adapter = :sidekiq
и вот теперь:
Code:
$ bundle exec sidekiq
...и sidekiq уже работает, выполняя предписанную задачу раз в минуту:
Code:
2021-01-28T22:51:03.245Z pid=10080 tid=4to class=HardWorker jid=0de0ca20ba891d00ab13b544 INFO: start
"Hello World!"
2021-01-28T22:51:03.250Z pid=10080 tid=4to class=HardWorker jid=0de0ca20ba891d00ab13b544 elapsed=0.005 INFO: done
Последнее редактирование: 3 года 10 мес. назад пользователем Aleksej.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
- Aleksej
- Автор темы
- Не в сети
- Модератор
3 года 10 мес. назад #2
от Aleksej
Aleksej ответил в теме How to do scheduling using Sidekiq Cron on Ruby on Rails
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
- Nguen
- Не в сети
- Новый участник
Less
Больше
- Сообщений: 17
- Спасибо получено: 0
3 года 10 мес. назад #3
от Nguen
Nguen ответил в теме How to do scheduling using Sidekiq Cron on Ruby on Rails
Внятных материалов по sidekiq на русском мало...
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
- serge
- Не в сети
- Модератор
Less
Больше
- Сообщений: 988
- Спасибо получено: 146
3 года 10 мес. назад - 3 года 10 мес. назад #4
от serge
Добавление Sidekiq и Redis в приложение Ruby on Rails, отличная статья на русском: www.digitalocean.com/community/tutorials...rails-application-ru
А я смогу! - А поглядим! - А я упрямый!
serge ответил в теме How to do scheduling using Sidekiq Cron on Ruby on Rails
Nguen пишет: Внятных материалов по sidekiq на русском мало...
Добавление Sidekiq и Redis в приложение Ruby on Rails, отличная статья на русском: www.digitalocean.com/community/tutorials...rails-application-ru
А я смогу! - А поглядим! - А я упрямый!
Последнее редактирование: 3 года 10 мес. назад пользователем serge.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.