Как создать и настроить свой веб-сервер на VDS (05 сен 2024)

Осенью самое время заняться установкой и тюнингом своего веб-сервера. Не правда ли?

How to do scheduling using Sidekiq Cron on Ruby on Rails

Больше
3 года 9 мес. назад - 3 года 9 мес. назад #1 от Aleksej



Кратенькое для новичков ЦУ относительно "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 года 9 мес. назад пользователем Aleksej.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Dev banner 2
Больше
3 года 9 мес. назад #2 от Aleksej

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
3 года 9 мес. назад #3 от Nguen
Внятных материалов по sidekiq на русском мало...

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
3 года 9 мес. назад - 3 года 9 мес. назад #4 от serge

Nguen пишет: Внятных материалов по sidekiq на русском мало...


Добавление Sidekiq и Redis в приложение Ruby on Rails, отличная статья на русском:  www.digitalocean.com/community/tutorials...rails-application-ru

А я смогу! - А поглядим! - А я упрямый!
Последнее редактирование: 3 года 9 мес. назад пользователем serge.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Работает на Kunena форум