Files
neocities/workers/purge_cache_worker.rb

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