leveret 0.1.1 → 0.1.2
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 +7 -5
- data/exe/leveret_worker +2 -7
- data/lib/leveret/cli.rb +77 -0
- data/lib/leveret/version.rb +1 -1
- data/lib/leveret/worker.rb +6 -13
- metadata +2 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0fa818a1ffcc9bc99f240661a7f4d6b8fac47ce4
|
4
|
+
data.tar.gz: 4eff94051e933d7fb226a21a7026755459bc14cc
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8d3a79bede854e7fc939c5d01208a0d79463b9d2e8f6212ff9721e947d4a14c48e0bdef30bbc8b52269de7ccee0aa98437ef1f200eb98767c9dc2cf674cc4727
|
7
|
+
data.tar.gz: b93bfe1b96cae3dd7923dc005fa31a2da00d7582d80df9ba57f66fa041d318aa91516f6882c6a6251e756330ee09ac167e3427b92a360ec955a9f0c3702eedeb
|
data/README.md
CHANGED
@@ -113,22 +113,24 @@ MyJob.enqueue(test_text: "Hi there! Please write me to the test file.", priority
|
|
113
113
|
To start a leveret worker, simply run the `leveret_worker` executable included in the gem. Started with no arguments it
|
114
114
|
will create a worker monitoring the default queue and process one job at a time.
|
115
115
|
|
116
|
-
Changing the queues that a worker monitors requires passing a comma separated list of queue names in the
|
117
|
-
|
116
|
+
Changing the queues that a worker monitors requires passing a comma separated list of queue names in the option
|
117
|
+
`--queues`. The example below watches for jobs on the queues `standard` and `other`.
|
118
118
|
|
119
119
|
```bash
|
120
|
-
bundle exec leveret_worker
|
120
|
+
bundle exec leveret_worker --queues standard,other
|
121
121
|
```
|
122
122
|
|
123
123
|
By default, workers will only process one job at a time. For each job that is executed, a child process is forked, and
|
124
124
|
the job run in the new process. When the job completes, the fork exits. We can process more jobs simultaniously simply
|
125
|
-
by allowing more forks to run. To increase this limit set the `
|
125
|
+
by allowing more forks to run. To increase this limit set the `--processes` option. There is no limit to
|
126
126
|
this variable in Leveret, but you should be aware of your own OS and resource limits.
|
127
127
|
|
128
128
|
```bash
|
129
|
-
bundle exec leveret_worker
|
129
|
+
bundle exec leveret_worker --processes 5
|
130
130
|
```
|
131
131
|
|
132
|
+
It's also possible to set the log level and output from the command line, call up `--help` for more details.
|
133
|
+
|
132
134
|
## Configuration
|
133
135
|
|
134
136
|
Configuration in Leveret is done via a configure block. In a Rails application it is recommended you place your
|
data/exe/leveret_worker
CHANGED
@@ -2,15 +2,10 @@
|
|
2
2
|
|
3
3
|
require "bundler/setup"
|
4
4
|
require "leveret"
|
5
|
+
require "leveret/cli"
|
5
6
|
|
6
7
|
if File.exist?("./config/environment.rb")
|
7
8
|
require File.expand_path("./config/environment.rb")
|
8
9
|
end
|
9
10
|
|
10
|
-
|
11
|
-
queues << Leveret.configuration.default_queue_name if queues.empty?
|
12
|
-
|
13
|
-
concurrent_fork_count = ENV["PROCESSES"] || Leveret.configuration.concurrent_fork_count
|
14
|
-
|
15
|
-
worker = Leveret::Worker.new(queues: queues, concurrent_fork_count: concurrent_fork_count)
|
16
|
-
worker.do_work
|
11
|
+
Leveret::CLI.new(ARGV)
|
data/lib/leveret/cli.rb
ADDED
@@ -0,0 +1,77 @@
|
|
1
|
+
module Leveret
|
2
|
+
class CLI
|
3
|
+
attr_accessor :options
|
4
|
+
|
5
|
+
def initialize(args)
|
6
|
+
self.options = {}
|
7
|
+
|
8
|
+
parse_options(args)
|
9
|
+
configure_leveret
|
10
|
+
start_worker
|
11
|
+
end
|
12
|
+
|
13
|
+
private
|
14
|
+
|
15
|
+
def parse_options(args)
|
16
|
+
option_parser.parse!(args)
|
17
|
+
end
|
18
|
+
|
19
|
+
def configure_leveret
|
20
|
+
Leveret.configure do |config|
|
21
|
+
config.concurrent_fork_count = options[:processes] if options[:processes]
|
22
|
+
config.log_level = options[:log_level] if options[:log_level]
|
23
|
+
config.log_file = options[:log_file] if options[:log_file]
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
def start_worker
|
28
|
+
Leveret::Worker.new(*options[:queues]).do_work
|
29
|
+
end
|
30
|
+
|
31
|
+
def option_parser
|
32
|
+
@option_parser ||= OptionParser.new do |opts|
|
33
|
+
opts.banner = "Usage: leveret_worker [options]"
|
34
|
+
opts.separator ""
|
35
|
+
opts.separator "Options:"
|
36
|
+
|
37
|
+
opts.on "-q", "--queues [QUEUES]", String, "Comma separated list of queues to subscribe to" do |queues|
|
38
|
+
options[:queues] = queues.split(',')
|
39
|
+
end
|
40
|
+
|
41
|
+
opts.on "-p", "--processes [PROCESSES]", Integer, "Number of concurrent jobs to process" do |processes|
|
42
|
+
options[:processes] = processes
|
43
|
+
end
|
44
|
+
|
45
|
+
opts.on '-l', '--log-level [LEVEL]', String, "Level of log output (debug, info, warning, error, fatal)" do |lvl|
|
46
|
+
options[:log_level] = convert_log_level(lvl)
|
47
|
+
end
|
48
|
+
|
49
|
+
opts.on '-o', '--log-output [FILE]', String, "Location to write log file to" do |logfile|
|
50
|
+
options[:log_file] = logfile
|
51
|
+
end
|
52
|
+
|
53
|
+
opts.on_tail '-h', '--help', "Show this message" do
|
54
|
+
STDOUT.puts opts
|
55
|
+
exit
|
56
|
+
end
|
57
|
+
|
58
|
+
opts.on_tail '-v', '--version', "Show the version" do
|
59
|
+
STDOUT.puts Leveret::VERSION
|
60
|
+
exit
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
def convert_log_level(level)
|
66
|
+
case level
|
67
|
+
when 'debug' then Logger::DEBUG
|
68
|
+
when 'info' then Logger::INFO
|
69
|
+
when 'warn' then Logger::WARN
|
70
|
+
when 'error' then Logger::ERROR
|
71
|
+
when 'fatal' then Logger::FATAL
|
72
|
+
else
|
73
|
+
Logger::INFO
|
74
|
+
end
|
75
|
+
end
|
76
|
+
end
|
77
|
+
end
|
data/lib/leveret/version.rb
CHANGED
data/lib/leveret/worker.rb
CHANGED
@@ -15,19 +15,12 @@ module Leveret
|
|
15
15
|
|
16
16
|
# Create a new worker to process jobs from the list of queue names passed
|
17
17
|
#
|
18
|
-
# @
|
19
|
-
#
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
queues: [configuration.default_queue_name],
|
25
|
-
concurrent_fork_count: [configuration.concurrent_fork_count]
|
26
|
-
}.merge(options)
|
27
|
-
|
28
|
-
Leveret.configuration.concurrent_fork_count = options[:concurrent_fork_count]
|
29
|
-
|
30
|
-
self.queues = options[:queues].map { |name| Leveret::Queue.new(name) }
|
18
|
+
# @param [Array<String>] queue_names ([Leveret.configuration.default_queue_name]) A list of queue names for this
|
19
|
+
# worker to subscribe to and process
|
20
|
+
def initialize(*queue_names)
|
21
|
+
queue_names << configuration.default_queue_name if queue_names.empty?
|
22
|
+
|
23
|
+
self.queues = queue_names.map { |name| Leveret::Queue.new(name) }
|
31
24
|
self.consumers = []
|
32
25
|
@time_to_die = false
|
33
26
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: leveret
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Dan Wentworth
|
@@ -99,6 +99,7 @@ files:
|
|
99
99
|
- exe/leveret_worker
|
100
100
|
- leveret.gemspec
|
101
101
|
- lib/leveret.rb
|
102
|
+
- lib/leveret/cli.rb
|
102
103
|
- lib/leveret/configuration.rb
|
103
104
|
- lib/leveret/job.rb
|
104
105
|
- lib/leveret/log_formatter.rb
|