Rails Insights

Gwehandling Swyddi Cefndir gyda Sidekiq yn Ruby

Mae rheoli swyddi cefndir yn hanfodol i unrhyw gymhwysiad gwe, yn enwedig pan fydd angen prosesau hir a chymhleth i gael eu rhedeg heb oedi. Mae Sidekiq yn un o'r offer mwyaf poblogaidd ar gyfer rheoli swyddi cefndir yn Ruby, gan ei fod yn cynnig perfformiad uchel a hawdd ei ddefnyddio. Yn yr erthygl hon, byddwn yn archwilio sut i ddefnyddio Sidekiq i reoli swyddi cefndir yn eich cymhwysiad Ruby.

Beth yw Sidekiq?

Mae Sidekiq yn fframwaith ar gyfer rheoli swyddi cefndir yn Ruby sy'n seiliedig ar Redis. Mae'n caniatáu i chi brosesu swyddi yn asyncronol, sy'n golygu y gall eich cymhwysiad barhau i weithredu heb aros am weithrediadau hir. Mae Sidekiq yn cynnig nifer o nodweddion defnyddiol, gan gynnwys:

  • Perfformiad uchel: Mae Sidekiq yn defnyddio threaed i brosesu swyddi, sy'n ei gwneud yn gyflymach na llawer o fframweithiau eraill.
  • Hawdd i'w ddefnyddio: Mae'r API yn syml ac yn hawdd i ddeall, gan ei gwneud yn hawdd i ddechreuwyr ei ddefnyddio.
  • Gwefan weledol: Mae Sidekiq yn cynnig rhyngwyneb gwe sy'n caniatáu i chi fonitro swyddi a gweld statws eu gweithrediad.

Sut i Ddechrau gyda Sidekiq

Mae dechrau gyda Sidekiq yn syml. Dilynwch y camau canlynol i'w osod a'i ddefnyddio yn eich prosiect Ruby.

Cam 1: Gosod Sidekiq

Y cam cyntaf yw gosod Sidekiq yn eich prosiect. Gallwch ei wneud trwy ychwanegu'r canlynol i'ch ffeil Gemfile:

gem 'sidekiq'

Yna, rhedeg y gorchymyn canlynol i osod y gem:

bundle install

Cam 2: Gosod Redis

Mae Sidekiq yn dibynnu ar Redis i storio a rheoli swyddi. Mae angen i chi osod Redis ar eich system. Gallwch ei wneud trwy ddefnyddio Homebrew ar macOS:

brew install redis

Ar ôl ei osod, gallwch ddechrau Redis gyda'r gorchymyn:

redis-server

Cam 3: Creu Sefydliad Sidekiq

Y cam nesaf yw creu sefydliad Sidekiq. Creu ffeil o'r enw sidekiq.rb yn y cyfeiriadur config/initializers a chynnwys y cod canlynol:

require 'sidekiq'
Sidekiq.configure_server do |config|
  config.redis = { url: 'redis://localhost:6379/0' }
end

Sidekiq.configure_client do |config|
  config.redis = { url: 'redis://localhost:6379/0' }
end

Creu Swyddi Cefndir

Ar ôl i chi sefydlu Sidekiq, gallwch ddechrau creu swyddi cefndir. Mae angen i chi greu dosbarth sy'n ymestyn o Sidekiq::Worker. Dyma enghraifft o ddosbarth sy'n cynrychioli swydd:

class MyWorker
  include Sidekiq::Worker

  def perform(name, count)
    puts "Hello, #{name}! You are number #{count}."
  end
end

Defnyddio'r Swydd

Gallwch ddefnyddio'r dosbarth hwn i ddanfon swyddi i Sidekiq. Mae'r dull perform_async yn caniatáu i chi ddanfon y swydd i'r ci:

MyWorker.perform_async('John', 1)

Mae hyn yn ychwanegu'r swydd i'r ci, a bydd Sidekiq yn ei brosesu yn fuan.

Monitro Swyddi gyda Rhyngwyneb Gwe Sidekiq

Mae Sidekiq yn cynnig rhyngwyneb gwe sy'n caniatáu i chi fonitro statws eich swyddi. I ddefnyddio'r rhyngwyneb gwe, ychwanegwch y canlynol i'ch ffeil routes.rb:

require 'sidekiq/web'
mount Sidekiq::Web => '/sidekiq'

Yna, gallwch fynd i http://localhost:3000/sidekiq i weld y rhyngwyneb gwe. Mae'n dangos y swyddi sy'n aros, y rhai sydd wedi'u cwblhau, a'r rhai sydd wedi methu.

Gweithredu Swyddi yn Asyncronol

Mae Sidekiq yn caniatáu i chi weithredu swyddi yn asyncronol, sy'n golygu y gall eich cymhwysiad barhau i weithredu tra bod y swyddi yn cael eu prosesu. Mae hyn yn arbennig o ddefnyddiol ar gyfer gweithrediadau sy'n cymryd amser, fel anfon e-byst neu brosesu data.

Enghraifft o Anfon E-bost

Dyma enghraifft o sut y gallai swydd anfon e-bost edrych:

class EmailWorker
  include Sidekiq::Worker

  def perform(email_address)
    # Cod i anfon e-bost
    puts "Sending email to #{email_address}"
  end
end

Gallwch ddefnyddio'r dosbarth hwn fel hyn:

EmailWorker.perform_async('example@example.com')

Gweithredu Swyddi yn Reolaidd

Os ydych am weithredu swyddi ar amser penodol, gallwch ddefnyddio gem fel sidekiq-scheduler. Mae hyn yn caniatáu i chi ddirwyn swyddi i'w gweithredu ar amser penodol neu ar gyfnodau penodol.

Gosod Sidekiq Scheduler

Ychwanegwch y gem i'ch ffeil Gemfile:

gem 'sidekiq-scheduler'

Yna, rhedeg:

bundle install

Gallwch greu swyddi a ddirwyn nhw fel hyn:

class MyScheduledWorker
  include Sidekiq::Worker

  def perform
    puts "This job runs every hour."
  end
end

Yna, gallwch ddirwyn y swydd i redeg bob awr yn eich ffeil sidekiq.yml:

:schedule:
  my_scheduled_worker:
    cron: "0 * * * *" # Runs every hour
    class: MyScheduledWorker

Diogelwch a Rheoli Gwallau

Mae'n bwysig rheoli gwallau pan fyddwch yn gweithio gyda swyddi cefndir. Mae Sidekiq yn cynnig dulliau i ddelio â gwallau, gan gynnwys ailgychwyn swyddi sydd wedi methu. Gallwch ddefnyddio'r dull sidekiq_retry_in i bennu pa mor hir i aros cyn ailgychwyn swydd:

class MyWorker
  include Sidekiq::Worker
  sidekiq_options retry: 5

  def perform
    # Cod sy'n gallu methu
  end
end

Casgliad

Mae Sidekiq yn offeryn pwerus ar gyfer rheoli swyddi cefndir yn Ruby. Mae'n cynnig perfformiad uchel, hawdd ei ddefnyddio, a rhyngwyneb gwe sy'n caniatáu i chi fonitro statws eich swyddi. Trwy ddilyn y camau a'r enghreifftiau a ddisgrifiwyd yn yr erthygl hon, gallwch ddechrau defnyddio Sidekiq yn eich prosiectau Ruby a gwneud y gorau o swyddi cefndir.

Peidiwch ag anghofio y gall Sidekiq hefyd weithio gyda gemau eraill fel ActiveJob, sy'n caniatáu i chi ddefnyddio Sidekiq fel y ci ar gyfer eich cymhwysiad Ruby on Rails. Mae'r posibiliadau yn ddiddiwedd, a gobeithio y byddwch yn mwynhau'r profiad o ddefnyddio Sidekiq!

Published: August 13, 2024

© 2024 RailsInsights. All rights reserved.