qpush 0.1.7 → 0.1.8
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.byebug_history +6 -0
- data/dump.rdb +0 -0
- data/lib/qpush/base/config.rb +1 -1
- data/lib/qpush/server/apis.rb +9 -13
- data/lib/qpush/server/apis/delay.rb +2 -2
- data/lib/qpush/server/apis/fail.rb +1 -1
- data/lib/qpush/server/apis/history.rb +2 -2
- data/lib/qpush/server/apis/morgue.rb +2 -2
- data/lib/qpush/server/apis/perform.rb +2 -2
- data/lib/qpush/server/apis/queue.rb +2 -2
- data/lib/qpush/server/apis/success.rb +1 -1
- data/lib/qpush/server/config.rb +6 -0
- data/lib/qpush/server/delay.rb +3 -3
- data/lib/qpush/server/heartbeat.rb +1 -1
- data/lib/qpush/server/jobs.rb +9 -18
- data/lib/qpush/server/perform.rb +1 -1
- data/lib/qpush/server/queue.rb +1 -1
- data/lib/qpush/server/redis.rb +6 -20
- data/lib/qpush/server/worker.rb +1 -1
- data/lib/qpush/version.rb +1 -1
- data/lib/qpush/web/apis/crons.rb +1 -1
- data/lib/qpush/web/apis/heart.rb +1 -1
- data/lib/qpush/web/apis/history.rb +1 -1
- data/lib/qpush/web/apis/morgue.rb +1 -1
- data/lib/qpush/web/apis/queue_delayed.rb +2 -2
- data/lib/qpush/web/apis/retries.rb +1 -1
- data/lib/qpush/web/apis/stats.rb +2 -2
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5b7af474af17142a61d366bd6f9112b2abede127
|
4
|
+
data.tar.gz: 7ad15b8b50d6a129f5dff7ec7039f554fc7f11d0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f85e768b6f01d936fe3a156abee7a815d7a5a9965a970c9d62caffed9ca08262b74410fcef22d91c1f98cfb5b69226f8466d37e52cbae8a4c17fdc32ebb40aca
|
7
|
+
data.tar.gz: 86c720933d37d2bfbd3a9633c07bf5c691e8c85aaceaba3cbe280fd9bc05ec06c63948fdf755a20aa698117897f53d6ea0909acb060a061e60aa7239afb1320a
|
data/.byebug_history
CHANGED
data/dump.rdb
ADDED
Binary file
|
data/lib/qpush/base/config.rb
CHANGED
data/lib/qpush/server/apis.rb
CHANGED
@@ -15,41 +15,37 @@ module QPush
|
|
15
15
|
end
|
16
16
|
end
|
17
17
|
|
18
|
-
# The ApiWrapper provides simple
|
18
|
+
# The ApiWrapper provides simple functions for all the API
|
19
19
|
# classes available for jobs. This provides a single entry point to
|
20
20
|
# the API's for job objects.
|
21
21
|
#
|
22
|
-
|
23
|
-
def initialize(job)
|
24
|
-
@job = job
|
25
|
-
end
|
26
|
-
|
22
|
+
module ApiWrapper
|
27
23
|
def queue
|
28
|
-
Apis::Queue.call(
|
24
|
+
Apis::Queue.call(self)
|
29
25
|
end
|
30
26
|
|
31
27
|
def perform
|
32
|
-
Apis::Perform.call(
|
28
|
+
Apis::Perform.call(self)
|
33
29
|
end
|
34
30
|
|
35
31
|
def execute
|
36
|
-
Apis::Execute.call(
|
32
|
+
Apis::Execute.call(self)
|
37
33
|
end
|
38
34
|
|
39
35
|
def delay
|
40
|
-
Apis::Delay.call(
|
36
|
+
Apis::Delay.call(self, :delay)
|
41
37
|
end
|
42
38
|
|
43
39
|
def retry
|
44
|
-
Apis::Delay.call(
|
40
|
+
Apis::Delay.call(self, :retry)
|
45
41
|
end
|
46
42
|
|
47
43
|
def morgue
|
48
|
-
Apis::Morgue.call(
|
44
|
+
Apis::Morgue.call(self)
|
49
45
|
end
|
50
46
|
|
51
47
|
def setup
|
52
|
-
Apis::Setup.call(
|
48
|
+
Apis::Setup.call(self)
|
53
49
|
end
|
54
50
|
end
|
55
51
|
end
|
@@ -18,8 +18,8 @@ module QPush
|
|
18
18
|
|
19
19
|
def delay_job
|
20
20
|
Server.redis do |conn|
|
21
|
-
conn.hincrby(Server.keys
|
22
|
-
conn.zadd(Server.keys
|
21
|
+
conn.hincrby(Server.keys[:stats], @stat, 1)
|
22
|
+
conn.zadd(Server.keys[:delay], @time, @job.to_json)
|
23
23
|
end
|
24
24
|
end
|
25
25
|
|
@@ -10,8 +10,8 @@ module QPush
|
|
10
10
|
|
11
11
|
def send_to_morgue
|
12
12
|
Server.redis do |conn|
|
13
|
-
conn.hincrby(Server.keys
|
14
|
-
conn.lpush(Server.keys
|
13
|
+
conn.hincrby(Server.keys[:stats], 'dead', 1)
|
14
|
+
conn.lpush(Server.keys[:morgue], @job.to_json)
|
15
15
|
end
|
16
16
|
end
|
17
17
|
end
|
@@ -10,8 +10,8 @@ module QPush
|
|
10
10
|
|
11
11
|
def perform_job
|
12
12
|
Server.redis do |conn|
|
13
|
-
conn.hincrby(Server.keys
|
14
|
-
conn.lpush("#{Server.keys
|
13
|
+
conn.hincrby(Server.keys[:stats], 'performed', 1)
|
14
|
+
conn.lpush("#{Server.keys[:perform]}:#{@job.priority}", @job.to_json)
|
15
15
|
end
|
16
16
|
end
|
17
17
|
end
|
@@ -10,8 +10,8 @@ module QPush
|
|
10
10
|
|
11
11
|
def queue_job
|
12
12
|
Server.redis do |conn|
|
13
|
-
conn.hincrby(Server.keys
|
14
|
-
conn.lpush(Server.keys
|
13
|
+
conn.hincrby(Server.keys[:stats], 'queued', 1)
|
14
|
+
conn.lpush(Server.keys[:queue], @job.to_json)
|
15
15
|
end
|
16
16
|
end
|
17
17
|
end
|
data/lib/qpush/server/config.rb
CHANGED
data/lib/qpush/server/delay.rb
CHANGED
@@ -34,7 +34,7 @@ module QPush
|
|
34
34
|
# If any are found, begin to update them.
|
35
35
|
#
|
36
36
|
def retrieve_delays
|
37
|
-
delays = @conn.zrangebyscore(Server.keys
|
37
|
+
delays = @conn.zrangebyscore(Server.keys[:delay], 0, Time.now.to_i)
|
38
38
|
delays.any? ? update_delays(delays) : @conn.unwatch
|
39
39
|
end
|
40
40
|
|
@@ -42,7 +42,7 @@ module QPush
|
|
42
42
|
#
|
43
43
|
def update_delays(delays)
|
44
44
|
@conn.multi do |multi|
|
45
|
-
multi.zrem(Server.keys
|
45
|
+
multi.zrem(Server.keys[:delay], delays)
|
46
46
|
delays.each { |job| perform_job(job) }
|
47
47
|
end
|
48
48
|
end
|
@@ -59,7 +59,7 @@ module QPush
|
|
59
59
|
# Performs a watch on our delay list
|
60
60
|
#
|
61
61
|
def watch_delay
|
62
|
-
@conn.watch(Server.keys
|
62
|
+
@conn.watch(Server.keys[:delay]) do
|
63
63
|
yield if block_given?
|
64
64
|
end
|
65
65
|
end
|
data/lib/qpush/server/jobs.rb
CHANGED
@@ -7,12 +7,19 @@ module QPush
|
|
7
7
|
end
|
8
8
|
|
9
9
|
def _register_job(base)
|
10
|
-
Server.redis { |c| c.sadd(QPush::Base::KEY
|
10
|
+
Server.redis { |c| c.sadd("#{QPush::Base::KEY}:jobs", base.name) }
|
11
11
|
end
|
12
12
|
end
|
13
13
|
end
|
14
14
|
|
15
|
-
|
15
|
+
class Job < QPush::Base::Job
|
16
|
+
include QPush::Server::ApiWrapper
|
17
|
+
include ObjectValidator::Validate
|
18
|
+
|
19
|
+
def initialize(options)
|
20
|
+
super
|
21
|
+
end
|
22
|
+
|
16
23
|
def mark_success
|
17
24
|
@failed = false
|
18
25
|
@total_success += 1
|
@@ -58,22 +65,6 @@ module QPush
|
|
58
65
|
end
|
59
66
|
end
|
60
67
|
|
61
|
-
class Job < QPush::Base::Job
|
62
|
-
extend Forwardable
|
63
|
-
|
64
|
-
include QPush::Server::JobHelpers
|
65
|
-
include ObjectValidator::Validate
|
66
|
-
|
67
|
-
|
68
|
-
def initialize(options)
|
69
|
-
super
|
70
|
-
@api = ApiWrapper.new(self)
|
71
|
-
end
|
72
|
-
|
73
|
-
def_delegators :@api, :queue, :execute, :perform,
|
74
|
-
:delay, :retry, :morgue, :setup
|
75
|
-
end
|
76
|
-
|
77
68
|
class JobValidator
|
78
69
|
include ObjectValidator::Validator
|
79
70
|
|
data/lib/qpush/server/perform.rb
CHANGED
@@ -28,7 +28,7 @@ module QPush
|
|
28
28
|
# Performs a 'blocking pop' on our redis job list.
|
29
29
|
#
|
30
30
|
def retrieve_job
|
31
|
-
json = Server.redis { |c| c.brpop(Server.keys
|
31
|
+
json = Server.redis { |c| c.brpop(Server.keys[:perform_list]) }
|
32
32
|
Job.new(JSON.parse(json.last))
|
33
33
|
rescue => e
|
34
34
|
raise ServerError, e.message
|
data/lib/qpush/server/queue.rb
CHANGED
@@ -29,7 +29,7 @@ module QPush
|
|
29
29
|
# Performs a 'blocking pop' on our redis job list.
|
30
30
|
#
|
31
31
|
def retrieve_job
|
32
|
-
json = Server.redis { |c| c.brpop(Server.keys
|
32
|
+
json = Server.redis { |c| c.brpop(Server.keys[:queue]) }
|
33
33
|
Job.new(JSON.parse(json.last))
|
34
34
|
rescue => e
|
35
35
|
raise ServerError, e.message
|
data/lib/qpush/server/redis.rb
CHANGED
@@ -13,7 +13,7 @@ module QPush
|
|
13
13
|
end
|
14
14
|
end
|
15
15
|
|
16
|
-
|
16
|
+
module RedisKeys
|
17
17
|
KEYS = [:delay,
|
18
18
|
:queue,
|
19
19
|
:perform,
|
@@ -23,25 +23,11 @@ module QPush
|
|
23
23
|
:history,
|
24
24
|
:morgue]
|
25
25
|
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
@priorities = options[:priorities] || 5
|
32
|
-
build_keyspaces
|
33
|
-
end
|
34
|
-
|
35
|
-
def perform_list
|
36
|
-
@perform_list ||= (1..@priorities).collect { |num| "#{perform}:#{num}" }
|
37
|
-
end
|
38
|
-
|
39
|
-
private
|
40
|
-
|
41
|
-
def build_keyspaces
|
42
|
-
KEYS.each do |key|
|
43
|
-
instance_variable_set("@#{key}", "#{QPush::Base::KEY}:#{@namespace}:#{key}")
|
44
|
-
end
|
26
|
+
def self.build(namespace, priorities)
|
27
|
+
name = "#{QPush::Base::KEY}:#{namespace}"
|
28
|
+
keys = Hash[KEYS.collect { |key| [key, "#{name}:#{key}"] }]
|
29
|
+
keys[:perform_list] = (1..5).collect { |num| "#{keys[:perform]}:#{num}" }
|
30
|
+
keys
|
45
31
|
end
|
46
32
|
end
|
47
33
|
end
|
data/lib/qpush/server/worker.rb
CHANGED
data/lib/qpush/version.rb
CHANGED
data/lib/qpush/web/apis/crons.rb
CHANGED
data/lib/qpush/web/apis/heart.rb
CHANGED
@@ -17,13 +17,13 @@ module QPush
|
|
17
17
|
private
|
18
18
|
|
19
19
|
def retrieve_delay
|
20
|
-
delays = @conn.zrangebyscore(Web.keys
|
20
|
+
delays = @conn.zrangebyscore(Web.keys[:delay], @score, @score)
|
21
21
|
delays.each
|
22
22
|
|
23
23
|
# Performs a watch on our delay list
|
24
24
|
#
|
25
25
|
def watch_delay
|
26
|
-
@conn.watch(Web.keys
|
26
|
+
@conn.watch(Web.keys[:delay]) do
|
27
27
|
yield if block_given?
|
28
28
|
end
|
29
29
|
end
|
data/lib/qpush/web/apis/stats.rb
CHANGED
@@ -29,7 +29,7 @@ module QPush
|
|
29
29
|
|
30
30
|
def retrieve_stats
|
31
31
|
@stats = Web.redis do |conn|
|
32
|
-
conn.hgetall(Web.keys
|
32
|
+
conn.hgetall(Web.keys[:stats])
|
33
33
|
end
|
34
34
|
end
|
35
35
|
|
@@ -49,7 +49,7 @@ module QPush
|
|
49
49
|
|
50
50
|
def calculate_current
|
51
51
|
Web.redis do |c|
|
52
|
-
Web.keys
|
52
|
+
Web.keys[:perform_list].collect { |list| c.llen(list) }.reduce(:+)
|
53
53
|
end
|
54
54
|
end
|
55
55
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: qpush
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Nicholas Sweeting
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-08-
|
11
|
+
date: 2016-08-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: redis
|
@@ -200,6 +200,7 @@ files:
|
|
200
200
|
- bin/qpush-server
|
201
201
|
- bin/qpush-web
|
202
202
|
- bin/setup
|
203
|
+
- dump.rdb
|
203
204
|
- jobs/fail_job.rb
|
204
205
|
- jobs/test_job.rb
|
205
206
|
- lib/qpush.rb
|
@@ -290,9 +291,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
290
291
|
version: '0'
|
291
292
|
requirements: []
|
292
293
|
rubyforge_project:
|
293
|
-
rubygems_version: 2.5.
|
294
|
+
rubygems_version: 2.5.1
|
294
295
|
signing_key:
|
295
296
|
specification_version: 4
|
296
297
|
summary: Fast and simple job queue microservice for Ruby.
|
297
298
|
test_files: []
|
298
|
-
has_rdoc:
|