skiplock 1.1.5 → 1.1.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +8 -4
- data/bin/skiplock +4 -2
- data/lib/skiplock/cron.rb +1 -0
- data/lib/skiplock/job.rb +0 -2
- data/lib/skiplock/manager.rb +20 -17
- data/lib/skiplock/version.rb +1 -2
- data/lib/skiplock.rb +1 -1
- metadata +6 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2ff56b97e28d0f5b162dfb538e33461569af6aa19ba062a85d7efb4ad0d129f2
|
4
|
+
data.tar.gz: 32472f59ee0ed8422fadfa52bb4cb59a15518c0211d58f562006748e30a1d72c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3b1a4e1314d300ae26e93f77256c6d543d46a425a44ab12d20b07e6c14e5d8d070db8cab532e6fd0fcb0b636fdde7cbee78aff65651e2ee9694b2eab03bfc276
|
7
|
+
data.tar.gz: e549e1db28766922325f8ef7b3b59e205df5bc6a6a5b3ca5b40899861c6baf732d973144aa0de2a09bc4d0fa42dc2fe3ec45958696fbbcb93fd60a8bc8b866cc
|
data/README.md
CHANGED
@@ -54,8 +54,10 @@ The library is quite small compared to other PostgreSQL job queues (eg. *delay_j
|
|
54
54
|
min_threads: 1
|
55
55
|
max_threads: 10
|
56
56
|
max_retries: 20
|
57
|
-
|
58
|
-
|
57
|
+
log_file: skiplock.log
|
58
|
+
log_level: info
|
59
|
+
log_count: 5
|
60
|
+
log_size: 10485760
|
59
61
|
namespace:
|
60
62
|
notification: custom
|
61
63
|
extensions: false
|
@@ -70,8 +72,10 @@ The library is quite small compared to other PostgreSQL job queues (eg. *delay_j
|
|
70
72
|
- **min_threads** (*integer*): sets minimum number of threads staying idle
|
71
73
|
- **max_threads** (*integer*): sets the maximum number of threads allowed to run jobs
|
72
74
|
- **max_retries** (*integer*): sets the maximum attempt a job will be retrying before it is marked expired. See `Retry system` for more details
|
73
|
-
- **
|
74
|
-
- **
|
75
|
+
- **log_file** (*string*): filename for skiplock logs; empty logfile will disable logging
|
76
|
+
- **log_level** (*string*): sets logging level (`debug, info, warn, error, fatal, unknown`)
|
77
|
+
- **log_count** (*integer*): number of log files to keep (ie: log rotation)
|
78
|
+
- **log_size** (*integer*): maximum size per log file (in bytes)
|
75
79
|
- **namespace** (*string*): sets namespace for jobs (workers will only process jobs of specified namespace)
|
76
80
|
- **notification** (*string*): sets the library to be used for notifying errors and exceptions (`auto, airbrake, bugsnag, exception_notification, custom`); using `auto` will detect library if available. See `Notification system` for more details
|
77
81
|
- **extensions** (*multi*): enable or disable the class method extension. See `ClassMethod extension` for more details
|
data/bin/skiplock
CHANGED
@@ -6,8 +6,10 @@ begin
|
|
6
6
|
op = OptionParser.new do |opts|
|
7
7
|
opts.banner = "Usage: #{File.basename($0)} [options]"
|
8
8
|
opts.on('-e', '--environment STRING', String, 'Rails environment')
|
9
|
-
opts.on('-l', '--
|
10
|
-
opts.on('-L', '--
|
9
|
+
opts.on('-l', '--log-file STRING', String, 'Log filename')
|
10
|
+
opts.on('-L', '--log-level STRING', String, 'Log level (debug, info, warn, error, fatal, unknown)')
|
11
|
+
opts.on('-m', '--log-count NUM', Integer, 'Log maximum count (default = 5)')
|
12
|
+
opts.on('-M', '--log-size NUM', Integer, 'Log maximum size (in bytes, default = 10485760)')
|
11
13
|
opts.on('-n', '--namespace STRING', String, 'Job namespace')
|
12
14
|
opts.on('-s', '--graceful-shutdown NUM', Integer, 'Number of seconds to wait for graceful shutdown')
|
13
15
|
opts.on('-r', '--max-retries NUM', Integer, 'Number of maxixum retries')
|
data/lib/skiplock/cron.rb
CHANGED
data/lib/skiplock/job.rb
CHANGED
@@ -108,7 +108,6 @@ module Skiplock
|
|
108
108
|
def execute(purge_completion: true, max_retries: 20)
|
109
109
|
raise 'Job has already been completed' if self.finished_at
|
110
110
|
self.update_columns(running: true, updated_at: Time.now) unless self.running
|
111
|
-
Skiplock.logger.info("[Skiplock] Performing #{self.job_class} (#{self.id}) from queue '#{self.queue_name || 'default'}'...") if Skiplock.logger
|
112
111
|
self.data ||= {}
|
113
112
|
self.data.delete('result')
|
114
113
|
self.exception_executions ||= {}
|
@@ -141,7 +140,6 @@ module Skiplock
|
|
141
140
|
target, method_name = ::YAML.load(self.data['arguments'].first)
|
142
141
|
job_name = "'#{target.name}.#{method_name}'"
|
143
142
|
end
|
144
|
-
Skiplock.logger.info "[Skiplock] Performed #{job_name} (#{self.id}) from queue '#{self.queue_name || 'default'}' in #{end_time - start_time} seconds"
|
145
143
|
end
|
146
144
|
end
|
147
145
|
self.exception || self.activejob_error || self.data['result']
|
data/lib/skiplock/manager.rb
CHANGED
@@ -4,15 +4,7 @@ module Skiplock
|
|
4
4
|
@config = Skiplock::DEFAULT_CONFIG.dup
|
5
5
|
@config.merge!(YAML.load_file('config/skiplock.yml')) rescue nil
|
6
6
|
@config.symbolize_keys!
|
7
|
-
|
8
|
-
if @config[:extensions] == true
|
9
|
-
Module.__send__(:include, Skiplock::Extension)
|
10
|
-
elsif @config[:extensions].is_a?(Array)
|
11
|
-
@config[:extensions].each { |n| n.constantize.__send__(:extend, Skiplock::Extension) if n.safe_constantize }
|
12
|
-
end
|
13
|
-
ActiveJob::Base.__send__(:include, Skiplock::Patch)
|
14
|
-
Skiplock.namespace = @config[:namespace]
|
15
|
-
(caller.any?{ |l| l =~ %r{/rack/} } && @config[:workers] == 0) ? async : Cron.setup
|
7
|
+
async if (caller.any?{ |l| l =~ %r{/rack/} } && @config[:workers] == 0)
|
16
8
|
end
|
17
9
|
|
18
10
|
def async
|
@@ -85,8 +77,12 @@ module Skiplock
|
|
85
77
|
@logger.info " Max threads: #{@config[:max_threads]}"
|
86
78
|
@logger.info " Environment: #{Rails.env}"
|
87
79
|
@logger.info " Namespace: #{@config[:namespace] || '(nil)'}"
|
88
|
-
@logger.info "
|
89
|
-
|
80
|
+
@logger.info " Log level: #{@config[:log_level]}"
|
81
|
+
if @config[:log_file]
|
82
|
+
@logger.info " Log count: #{@config[:log_count]}"
|
83
|
+
@logger.info " Log size: #{@config[:log_size]}"
|
84
|
+
end
|
85
|
+
@logger.info " Log file: #{@config[:log_file] || '(disabled)'}"
|
90
86
|
@logger.info " Workers: #{@config[:workers]}"
|
91
87
|
@logger.info " Queues: #{@config[:queues].map {|k,v| k + '(' + v.to_s + ')'}.join(', ')}" if @config[:queues].is_a?(Hash)
|
92
88
|
@logger.info " PID: #{Process.pid}"
|
@@ -95,6 +91,13 @@ module Skiplock
|
|
95
91
|
end
|
96
92
|
|
97
93
|
def configure
|
94
|
+
if @config[:extensions] == true
|
95
|
+
Module.__send__(:include, Skiplock::Extension)
|
96
|
+
elsif @config[:extensions].is_a?(Array)
|
97
|
+
@config[:extensions].each { |n| n.constantize.__send__(:extend, Skiplock::Extension) if n.safe_constantize }
|
98
|
+
end
|
99
|
+
ActiveJob::Base.__send__(:include, Skiplock::Patch)
|
100
|
+
Skiplock.namespace = @config[:namespace]
|
98
101
|
@hostname = "#{`hostname -f`.strip}|#{Socket.ip_address_list.reject(&:ipv4_loopback?).reject(&:ipv6?).map(&:ip_address).join('|')}"
|
99
102
|
@config.transform_values! {|v| v.is_a?(String) ? v.downcase : v}
|
100
103
|
@config[:graceful_shutdown] = 300 if @config[:graceful_shutdown] > 300
|
@@ -140,21 +143,21 @@ module Skiplock
|
|
140
143
|
end
|
141
144
|
|
142
145
|
def setup_logger
|
143
|
-
@config[:
|
146
|
+
@config[:log_level] = 'info' unless ['debug','info','warn','error','fatal','unknown'].include?(@config[:log_level].to_s)
|
144
147
|
if defined?(ActiveSupport::BroadcastLogger)
|
145
148
|
@logger = ActiveSupport::BroadcastLogger.new(::Logger.new(STDOUT))
|
146
149
|
else
|
147
150
|
@logger = ActiveSupport::Logger.new(STDOUT)
|
148
151
|
end
|
149
|
-
@logger.level = @config[:
|
152
|
+
@logger.level = @config[:log_level].to_sym
|
150
153
|
Skiplock.logger = @logger
|
151
|
-
if @config[:
|
154
|
+
if @config[:log_file].to_s.length > 0
|
152
155
|
if defined?(ActiveSupport::BroadcastLogger)
|
153
|
-
@logger.broadcast_to(::Logger.new(File.join(Rails.root, 'log', @config[:
|
156
|
+
@logger.broadcast_to(::Logger.new(File.join(Rails.root, 'log', @config[:log_file].to_s), @config[:log_count] || 5, @config[:log_size] || 10485760))
|
154
157
|
else
|
155
|
-
@logger.extend(ActiveSupport::Logger.broadcast(::Logger.new(File.join(Rails.root, 'log', @config[:
|
158
|
+
@logger.extend(ActiveSupport::Logger.broadcast(::Logger.new(File.join(Rails.root, 'log', @config[:log_file].to_s), @config[:log_count] || 5, @config[:log_size] || 10485760)))
|
156
159
|
end
|
157
|
-
ActiveJob::Base.logger =
|
160
|
+
ActiveJob::Base.logger = @logger
|
158
161
|
end
|
159
162
|
if @config[:standalone]
|
160
163
|
if defined?(ActiveSupport::BroadcastLogger)
|
data/lib/skiplock/version.rb
CHANGED
data/lib/skiplock.rb
CHANGED
@@ -11,7 +11,7 @@ require 'skiplock/worker'
|
|
11
11
|
require 'skiplock/version'
|
12
12
|
|
13
13
|
module Skiplock
|
14
|
-
DEFAULT_CONFIG = { 'graceful_shutdown' => 15, 'min_threads' => 1, 'max_threads' => 10, 'max_retries' => 20, '
|
14
|
+
DEFAULT_CONFIG = { 'graceful_shutdown' => 15, 'min_threads' => 1, 'max_threads' => 10, 'max_retries' => 20, 'log_file' => 'skiplock.log', 'log_level' => 'info', 'log_count' => 5, 'log_size' => 10485760, 'namespace' => nil, 'notification' => 'custom', 'extensions' => false, 'purge_completion' => true, 'queues' => { 'default' => 100, 'mailers' => 999 }, 'workers' => 0 }.freeze
|
15
15
|
|
16
16
|
def self.logger=(l)
|
17
17
|
@logger = l
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: skiplock
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.1.
|
4
|
+
version: 1.1.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tin Vo
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2024-12-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activejob
|
@@ -94,7 +94,7 @@ homepage: https://github.com/vtt/skiplock
|
|
94
94
|
licenses:
|
95
95
|
- MIT
|
96
96
|
metadata: {}
|
97
|
-
post_install_message:
|
97
|
+
post_install_message:
|
98
98
|
rdoc_options: []
|
99
99
|
require_paths:
|
100
100
|
- lib
|
@@ -109,8 +109,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
109
109
|
- !ruby/object:Gem::Version
|
110
110
|
version: '0'
|
111
111
|
requirements: []
|
112
|
-
rubygems_version: 3.
|
113
|
-
signing_key:
|
112
|
+
rubygems_version: 3.5.16
|
113
|
+
signing_key:
|
114
114
|
specification_version: 4
|
115
115
|
summary: ActiveJob Queue Adapter for PostgreSQL
|
116
116
|
test_files: []
|