mirror of
https://github.com/scinote-eln/scinote-web.git
synced 2024-12-27 10:14:17 +08:00
68 lines
2.4 KiB
Ruby
68 lines
2.4 KiB
Ruby
# DelayedWorkerConfig is a configuration object that parses and sanitize
|
|
# environmental variables. @note Used only for Delayed::Worker settings
|
|
module DelayedWorkerConfig
|
|
module_function
|
|
|
|
# If you want to keep failed jobs, set DELAYED_WORKER_DESTROY_FAILED_JOBS to
|
|
# false. The failed jobs will be marked with non-null failed_at.
|
|
def destroy_failed_jobs
|
|
value = ENV['DELAYED_WORKER_DESTROY_FAILED_JOBS']
|
|
return false unless value
|
|
return false unless value.in? %w(true 1)
|
|
true
|
|
end
|
|
|
|
# If no jobs are found, the worker sleeps for the amount of time specified by
|
|
# the sleep delay option. Default to 60 second.
|
|
def sleep_delay
|
|
value = ENV['DELAYED_WORKER_SLEEP_DELAY'].to_i
|
|
return 60 if value.zero?
|
|
value
|
|
end
|
|
|
|
# The default is 6 attempts. After this, the job either deleted
|
|
# or left in the database with "failed_at" set dempends on the
|
|
# DESTROY_FAILED_JOBS value
|
|
def max_attempts
|
|
1 # We want ActiveJob to handle retries
|
|
end
|
|
|
|
# The default DELAYED_WORKER_MAX_RUN_TIME is 30.minutes.
|
|
# If your job takes longer than that, another computer could pick it up.
|
|
# It's up to you to make sure your job doesn't exceed this time.
|
|
# You should set this to the longest time you think the job could take.
|
|
def max_run_time
|
|
value = ENV['DELAYED_WORKER_MAX_RUN_TIME'].to_i
|
|
return 30.minutes if value.zero?
|
|
value.minutes
|
|
end
|
|
|
|
# The default behavior is to read 10 jobs from the queue when finding an
|
|
# available job. You can configure this by setting.
|
|
def read_ahead
|
|
value = ENV['DELAYED_WORKER_READ_AHEAD'].to_i
|
|
return 10 if value.zero?
|
|
value
|
|
end
|
|
|
|
# By default all jobs will be queued without a named queue.
|
|
# A default named queue can be specified by using
|
|
def default_queue_name
|
|
value = ENV['DELAYED_WORKER_DEFAULT_QUEUE_NAME']
|
|
return 'default' unless value
|
|
value
|
|
end
|
|
end
|
|
|
|
# Delayed::Worker configuration
|
|
Delayed::Worker.destroy_failed_jobs = DelayedWorkerConfig.destroy_failed_jobs
|
|
Delayed::Worker.sleep_delay = DelayedWorkerConfig.sleep_delay
|
|
Delayed::Worker.max_attempts = DelayedWorkerConfig.max_attempts
|
|
Delayed::Worker.max_run_time = DelayedWorkerConfig.max_run_time
|
|
Delayed::Worker.read_ahead = DelayedWorkerConfig.read_ahead
|
|
Delayed::Worker.default_queue_name = DelayedWorkerConfig.default_queue_name
|
|
Delayed::Worker.queue_attributes = {
|
|
high_priority: { priority: -10 },
|
|
webhooks: { priority: 5 },
|
|
low_priority: { priority: 10 }
|
|
}
|