mirror of
https://github.com/neocities/neocities.git
synced 2026-05-26 16:34:02 +00:00
26 lines
646 B
Ruby
26 lines
646 B
Ruby
class PurgeCacheWorker
|
|
include Sidekiq::Worker
|
|
|
|
PURGE_STREAM_KEY = 'cache-purge-stream'
|
|
STREAM_MAX_LENGTH = 10_000
|
|
FOLLOWUP_PURGE_DELAYS = [1.minute, 10.minutes].freeze
|
|
|
|
sidekiq_options queue: :purgecache, retry: 10, backtrace: false, average_scheduled_poll_interval: 1
|
|
|
|
sidekiq_retry_in do |count|
|
|
60
|
|
end
|
|
|
|
def self.enqueue_purge(username, path)
|
|
perform_async username, path
|
|
|
|
FOLLOWUP_PURGE_DELAYS.each do |delay|
|
|
perform_in delay, username, path
|
|
end
|
|
end
|
|
|
|
def perform(username, path)
|
|
$redis_proxy.xadd(PURGE_STREAM_KEY, {u: username, p: path}, maxlen: STREAM_MAX_LENGTH, approximate: true)
|
|
end
|
|
end
|