qpush 0.1.7 → 0.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/.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:
|