mirror of
https://github.com/discourse/discourse.git
synced 2025-02-25 18:55:32 -06:00
PERF: Call web hook events in a new thread (#7451)
This commit is contained in:
parent
82a6cf8afd
commit
09ae12bd5d
@ -1,6 +1,13 @@
|
|||||||
# This is meant to be used by plugins to trigger and listen to events
|
# This is meant to be used by plugins to trigger and listen to events
|
||||||
# So we can execute code when things happen.
|
# So we can execute code when things happen.
|
||||||
class DiscourseEvent
|
class DiscourseEvent
|
||||||
|
def self.async
|
||||||
|
@async ||= !Rails.env.test?
|
||||||
|
end
|
||||||
|
|
||||||
|
def self.async=(val)
|
||||||
|
@async = val
|
||||||
|
end
|
||||||
|
|
||||||
# Defaults to a hash where default values are empty sets.
|
# Defaults to a hash where default values are empty sets.
|
||||||
def self.events
|
def self.events
|
||||||
@ -8,6 +15,14 @@ class DiscourseEvent
|
|||||||
end
|
end
|
||||||
|
|
||||||
def self.trigger(event_name, *params)
|
def self.trigger(event_name, *params)
|
||||||
|
if async
|
||||||
|
Thread.new { call_events(event_name, *params) }
|
||||||
|
else
|
||||||
|
call_events(event_name, *params)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def self.call_events(event_name, *params)
|
||||||
events[event_name].each do |event|
|
events[event_name].each do |event|
|
||||||
event.call(*params)
|
event.call(*params)
|
||||||
end
|
end
|
||||||
|
Loading…
Reference in New Issue
Block a user