提交 552e42f6 编写于 作者: D Dmitriy Zaporozhets

Merge pull request #2768 from rlaneve/feature/queued-web-hooks

Updates web hooks to process via queue
web: bundle exec unicorn_rails -p $PORT web: bundle exec unicorn_rails -p $PORT
worker: bundle exec sidekiq -q post_receive,mailer,system_hook,common,default worker: bundle exec sidekiq -q post_receive,mailer,system_hook,project_web_hook,common,default
...@@ -340,7 +340,7 @@ class Project < ActiveRecord::Base ...@@ -340,7 +340,7 @@ class Project < ActiveRecord::Base
end end
def execute_hooks(data) def execute_hooks(data)
hooks.each { |hook| hook.execute(data) } hooks.each { |hook| hook.async_execute(data) }
end end
def execute_services(data) def execute_services(data)
......
...@@ -34,4 +34,8 @@ class WebHook < ActiveRecord::Base ...@@ -34,4 +34,8 @@ class WebHook < ActiveRecord::Base
basic_auth: {username: parsed_url.user, password: parsed_url.password}) basic_auth: {username: parsed_url.user, password: parsed_url.password})
end end
end end
def async_execute(data)
Sidekiq::Client.enqueue(ProjectWebHookWorker, id, data)
end
end end
class ProjectWebHookWorker
include Sidekiq::Worker
sidekiq_options queue: :project_web_hook
def perform(hook_id, data)
WebHook.find(hook_id).execute data
end
end
...@@ -6,7 +6,7 @@ namespace :sidekiq do ...@@ -6,7 +6,7 @@ namespace :sidekiq do
desc "GITLAB | Start sidekiq" desc "GITLAB | Start sidekiq"
task :start do task :start do
run "nohup bundle exec sidekiq -q post_receive,mailer,system_hook,common,default -e #{Rails.env} -P #{pidfile} >> #{Rails.root.join("log", "sidekiq.log")} 2>&1 &" run "nohup bundle exec sidekiq -q post_receive,mailer,system_hook,project_web_hook,common,default -e #{Rails.env} -P #{pidfile} >> #{Rails.root.join("log", "sidekiq.log")} 2>&1 &"
end end
def pidfile def pidfile
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册