sidekiq 非同步處理任務

2021-09-30 12:47:52 字數 1683 閱讀 1158

1.安裝:

gem install sidekiq
或者在gemfile檔案中新增

gem 'sidekiq'

gem 'slim', ">= 1.3.0"

gem 'sinatra', '>= 1.3.0', :require => nil

2.掛載mount 可以讓你監控專案執行狀態

require

'sidekiq/web'

mount sidekiq::web, at: '/sidekiq'

sidekiq::web.use rack::auth

::basic

do|username, password|

username ==

'***'

&& password ==

'***x'

end

3 sidekiq配置 config/sidekiq.yml

:verbose: false

:concurrency: 5 # 併發數

:pidfile: ./tmp/pids/sidekiq.pid

:logfile: ./log/sidekiq.log # 輸出的日誌位址

:timeout: 30

:queues:

- default # 寫在佇列引數中的, 表示讓 sidekiq 處理這個 queue

- [hardworker, 2] # 使用陣列的形式寫, 第乙個引數為開啟的 queue 的名稱, 第二個為優先順序

- [emailworker, 3]

- [passwordworker, 4]

development:

:concurrency: 5

staging:

:concurrency: 10

production:

:concurrency: 5

4.在config/initializers下

redis_server = '127.0.0.1'

# redis伺服器

redis_port = 6379

# redis埠

redis_db_num = 11

# redis 資料庫序號

redis_namespace = 'high_sidekiq'

#命名空間,自定義的

sidekiq.configure_server do |config|

config.redis = :#/#", namespace: redis_namespace }

endsidekiq.configure_client do |config|

config.redis = :#/#", namespace: redis_namespace }

end

5.啟動專案:

rails s
6.啟動sidekiq

bundle exec sidekiq  -c config/sidekiq.yml 除錯啟動方式
7.在瀏覽器中輸入,然後輸入使用者名稱和密碼

sidekiq強大的非同步任務處理

本篇介紹sidekiq基於redis佇列的後端的非同步任務處理,當然還有定時任務,延時處理等功能。1.定義非同步處理worker類 class hardworker include sidekiq worker sidekiq options queue phoenix job timeout 60...

Sidekiq任務堵塞問題

今天發現伺服器上的sidekiq 執行緒全忙。佇列裡任務積累了好多。sidekiq裡的任務基本都是爬蟲指令碼,都需要請求外部 但是有些 的響應時間或者讀取時間太久,一直一直卡在那裡。使得後面的任務不能執行。所以我們就應該控制請求外部鏈結的讀取時間,避免執行緒卡住。第一種用rest client請求....

非同步處理任務框架

非同步處理任務框架 非同步獲取頭像 第三個引數就是非同步任務執行完畢後的返回值 author administrator public class loadimageasyntask extends asynctask public inte ce loadimageasyntaskcallback...