rabbit_jobs 0.5.9 → 0.6.0
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.
- data/lib/rabbit_jobs/configuration.rb +0 -4
- data/lib/rabbit_jobs/tasks.rb +13 -195
- data/lib/rabbit_jobs/version.rb +1 -1
- data/lib/rabbit_jobs.rb +1 -1
- metadata +12 -12
data/lib/rabbit_jobs/tasks.rb
CHANGED
@@ -1,6 +1,3 @@
|
|
1
|
-
# require 'rabbit_jobs/tasks'
|
2
|
-
# will give you the resque tasks
|
3
|
-
|
4
1
|
require 'rabbit_jobs'
|
5
2
|
require 'logger'
|
6
3
|
require 'rake'
|
@@ -22,202 +19,23 @@ end
|
|
22
19
|
|
23
20
|
namespace :rj do
|
24
21
|
task :environment do
|
25
|
-
# Rails.application.eager_load!
|
26
22
|
Rails.application.require_environment!
|
27
23
|
end
|
28
24
|
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
unless @do_only.count > 0 && !@do_only.include?("#{worker_name}-#{worker_num}")
|
37
|
-
queues = (worker_props[:queue] || worker_props[:queues] || "").split(' ')
|
38
|
-
|
39
|
-
worker = RJ::Worker.new(*queues)
|
40
|
-
worker.background = true
|
41
|
-
worker.process_name = "rj_worker #{worker_name}##{worker_num} #{rails_env} [#{queues.join(',')}]"
|
42
|
-
worker.pidfile = app_root.join("tmp/pids/rj_worker_#{rails_env}_#{worker_name}_#{worker_num}.pid")
|
43
|
-
RJ.logger = ::Logger.new(app_root.join("log/rj_worker_#{rails_env}_#{worker_name}_#{worker_num}.log"), 'daily')
|
44
|
-
RJ.logger.formatter = nil
|
45
|
-
RJ.logger.progname = 'rj_worker'
|
46
|
-
RJ.logger.level = Logger::INFO if ENV['VERBOSE']
|
47
|
-
puts "Starting #{worker_name}##{worker_num}"
|
48
|
-
|
49
|
-
# завершаем копию процесса, если воркер уже отработал
|
50
|
-
exit! if worker.work
|
51
|
-
end
|
52
|
-
end
|
53
|
-
end
|
54
|
-
end
|
55
|
-
|
56
|
-
task :stop => :load_config do
|
57
|
-
# получаем идентификаторы процессов
|
58
|
-
pids = {}
|
59
|
-
errors = []
|
60
|
-
|
61
|
-
RJ.config.workers.each do |worker_name, worker_props|
|
62
|
-
worker_num = 1
|
63
|
-
worker_props[:instances].to_i.times do
|
64
|
-
unless (@do_only.count > 0) && !@do_only.include?("#{worker_name}-#{worker_num}")
|
65
|
-
pidfile = app_root.join("tmp/pids/rj_worker_#{rails_env}_#{worker_name}_#{worker_num}.pid")
|
66
|
-
|
67
|
-
unless File.exists?(pidfile)
|
68
|
-
msg = "Pidfile not found: #{pidfile}"
|
69
|
-
errors << msg
|
70
|
-
$stderr.puts msg
|
71
|
-
else
|
72
|
-
pid = open(pidfile).read.to_i
|
73
|
-
pids[pid] = pidfile
|
74
|
-
queues = (worker_props[:queue] || worker_props[:queues] || "").split(' ')
|
75
|
-
puts "Stopping rj_worker #{worker_name}##{worker_num} #{rails_env} [#{queues.join(',')}]"
|
76
|
-
end
|
77
|
-
end
|
78
|
-
worker_num += 1
|
79
|
-
end
|
80
|
-
end
|
81
|
-
|
82
|
-
# пытаемся их убить
|
83
|
-
killed_pids = []
|
84
|
-
pids.each do |pid, pidfile|
|
85
|
-
begin
|
86
|
-
puts "try killing ##{pid}"
|
87
|
-
Process.kill("TERM", pid)
|
88
|
-
rescue => e
|
89
|
-
errors << "Not found process: #{pid} from #{pidfile}"
|
90
|
-
$stderr.puts errors.last
|
91
|
-
$stderr.puts "Removing pidfile ..."
|
92
|
-
File.delete(pidfile) if File.exist?(pidfile)
|
93
|
-
end
|
94
|
-
end
|
95
|
-
|
96
|
-
while killed_pids.count != pids.keys.count
|
97
|
-
pids.each_key do |pid|
|
98
|
-
begin
|
99
|
-
Process.kill(0, pid)
|
100
|
-
stopped = false
|
101
|
-
break
|
102
|
-
rescue
|
103
|
-
killed_pids.push(pid) unless killed_pids.include?(pid)
|
104
|
-
end
|
105
|
-
end
|
106
|
-
print '.'
|
107
|
-
sleep 1
|
108
|
-
end
|
109
|
-
|
110
|
-
fail(errors.join("\r\n")) if not errors.empty?
|
111
|
-
|
112
|
-
puts "\nrj_worker stopped."
|
113
|
-
end
|
114
|
-
|
115
|
-
task :status => :load_config do
|
116
|
-
errors = []
|
117
|
-
|
118
|
-
RJ.config.workers.each do |worker_name, worker_props|
|
119
|
-
worker_num = 1
|
120
|
-
worker_props[:instances].to_i.times do
|
121
|
-
pidfile = app_root.join("tmp/pids/rj_worker_#{rails_env}_#{worker_name}_#{worker_num}.pid")
|
122
|
-
|
123
|
-
unless File.exists?(pidfile)
|
124
|
-
errors << "Pidfile not found: #{pidfile}"
|
125
|
-
else
|
126
|
-
pid = open(pidfile).read.to_i
|
127
|
-
begin
|
128
|
-
raise "must return 1" unless Process.kill(0, pid) == 1
|
129
|
-
rescue
|
130
|
-
errors << "Pidfile found but process not respond: #{pidfile}\r\nRemoving pidfile."
|
131
|
-
File.delete(pidfile) if File.exist?(pidfile)
|
132
|
-
end
|
133
|
-
end
|
134
|
-
worker_num += 1
|
135
|
-
end
|
136
|
-
end
|
137
|
-
|
138
|
-
if errors.empty?
|
139
|
-
puts "ok"
|
140
|
-
else
|
141
|
-
fail errors.join("\r\n")
|
142
|
-
end
|
143
|
-
end
|
144
|
-
|
145
|
-
task :load_config do
|
146
|
-
@do_only = ENV["WORKERS"] ? ENV["WORKERS"].strip.split : []
|
147
|
-
@do_only.each do |worker|
|
148
|
-
worker_name, worker_num = worker.split('-')
|
149
|
-
unless RJ.config.workers.keys.include?(worker_name) && RJ.config.workers[worker_name][:instances].to_i >= worker_num.to_i
|
150
|
-
raise "Worker #{worker} not found."
|
151
|
-
end
|
152
|
-
end
|
153
|
-
end
|
25
|
+
desc "Start a Rabbit Jobs worker"
|
26
|
+
task :worker => :environment do
|
27
|
+
queues = (ENV['QUEUES'] || ENV['QUEUES'] || "").split(',')
|
28
|
+
make_dirs
|
29
|
+
worker = RJ::Worker.new(*queues)
|
30
|
+
worker.process_name = "rj_worker #{rails_env} [#{queues.join(',')}]"
|
31
|
+
exit(worker.work)
|
154
32
|
end
|
155
33
|
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
scheduler.background = true
|
163
|
-
scheduler.pidfile = app_root.join('tmp/pids/rj_scheduler.pid')
|
164
|
-
RJ.logger = ::Logger.new(app_root.join('log/rj_scheduler.log'), 'daily')
|
165
|
-
RJ.logger.formatter = nil
|
166
|
-
RJ.logger.progname = 'rj_scheduler'
|
167
|
-
RJ.logger.level = Logger::INFO if ENV['VERBOSE']
|
168
|
-
|
169
|
-
exit! if scheduler.work
|
170
|
-
puts "rj_scheduler started."
|
171
|
-
end
|
172
|
-
|
173
|
-
task :stop do
|
174
|
-
pidfile = app_root.join('tmp/pids/rj_scheduler.pid')
|
175
|
-
|
176
|
-
unless File.exists?(pidfile)
|
177
|
-
fail "Pidfile not found: #{pidfile}"
|
178
|
-
else
|
179
|
-
pid = open(pidfile).read.to_i
|
180
|
-
begin
|
181
|
-
Process.kill("TERM", pid)
|
182
|
-
rescue => e
|
183
|
-
$stderr.puts "Not found process: #{pid} from #{pidfile}"
|
184
|
-
$stderr.puts "Removing pidfile ..."
|
185
|
-
File.delete(pidfile) if File.exist?(pidfile)
|
186
|
-
fail "Not found process: #{pid} from #{pidfile}"
|
187
|
-
end
|
188
|
-
|
189
|
-
while true
|
190
|
-
begin
|
191
|
-
Process.kill(0, pid)
|
192
|
-
sleep 0.1
|
193
|
-
rescue
|
194
|
-
puts "rj_scheduler[##{pid}] stopped."
|
195
|
-
break
|
196
|
-
end
|
197
|
-
end
|
198
|
-
end
|
199
|
-
end
|
200
|
-
|
201
|
-
task :status do
|
202
|
-
pidfile = app_root.join('tmp/pids/rj_scheduler.pid')
|
203
|
-
|
204
|
-
unless File.exists?(pidfile)
|
205
|
-
# puts "Pidfile not found: #{pidfile}"
|
206
|
-
fail "Pidfile not found: #{pidfile}"
|
207
|
-
else
|
208
|
-
pid = open(pidfile).read.to_i
|
209
|
-
begin
|
210
|
-
raise "must return 1" unless Process.kill(0, pid) == 1
|
211
|
-
puts "ok"
|
212
|
-
rescue
|
213
|
-
puts "Pidfile found but process not respond: #{pidfile}"
|
214
|
-
puts "Removing pidfile."
|
215
|
-
File.delete(pidfile) if File.exist?(pidfile)
|
216
|
-
fail "Pidfile found but process not respond: #{pidfile}"
|
217
|
-
end
|
218
|
-
end
|
219
|
-
end
|
34
|
+
desc "Start a Rabbit Jobs scheduler"
|
35
|
+
task :scheduler do
|
36
|
+
make_dirs
|
37
|
+
scheduler = RabbitJobs::Scheduler.new
|
38
|
+
scheduler.process_name = "rj_scheduler #{rails_env}"
|
39
|
+
exit(scheduler.work)
|
220
40
|
end
|
221
|
-
|
222
|
-
# desc "Start a Rabbit Jobs scheduler"
|
223
41
|
end
|
data/lib/rabbit_jobs/version.rb
CHANGED
data/lib/rabbit_jobs.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rabbit_jobs
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.6.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-03-
|
12
|
+
date: 2013-03-20 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: amqp
|
16
|
-
requirement: &
|
16
|
+
requirement: &16471900 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ~>
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: '0.9'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *16471900
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: rake
|
27
|
-
requirement: &
|
27
|
+
requirement: &16468700 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: '0'
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *16468700
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: rufus-scheduler
|
38
|
-
requirement: &
|
38
|
+
requirement: &16490220 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ~>
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: '2.0'
|
44
44
|
type: :runtime
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *16490220
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: rails
|
49
|
-
requirement: &
|
49
|
+
requirement: &16485260 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ! '>='
|
@@ -54,7 +54,7 @@ dependencies:
|
|
54
54
|
version: '3.0'
|
55
55
|
type: :runtime
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *16485260
|
58
58
|
description: Background jobs on RabbitMQ
|
59
59
|
email:
|
60
60
|
- lazureykis@gmail.com
|
@@ -115,7 +115,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
115
115
|
version: '0'
|
116
116
|
segments:
|
117
117
|
- 0
|
118
|
-
hash: -
|
118
|
+
hash: -155870681663292308
|
119
119
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
120
120
|
none: false
|
121
121
|
requirements:
|
@@ -124,7 +124,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
124
124
|
version: '0'
|
125
125
|
segments:
|
126
126
|
- 0
|
127
|
-
hash: -
|
127
|
+
hash: -155870681663292308
|
128
128
|
requirements: []
|
129
129
|
rubyforge_project:
|
130
130
|
rubygems_version: 1.8.11
|