queue_classic 2.0.0rc4 → 2.0.0rc5
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/queue_classic/tasks.rb +3 -3
- data/lib/queue_classic/worker.rb +3 -3
- data/readme.md +4 -4
- data/test/worker_test.rb +9 -0
- metadata +3 -3
data/lib/queue_classic/tasks.rb
CHANGED
@@ -7,7 +7,7 @@ namespace :qc do
|
|
7
7
|
desc "Start a new worker for the (default or $QUEUE) queue"
|
8
8
|
task :work => :environment do
|
9
9
|
QC::Worker.new(
|
10
|
-
QC::
|
10
|
+
QC::QUEUE,
|
11
11
|
QC::TOP_BOUND,
|
12
12
|
QC::FORK_WORKER,
|
13
13
|
QC::LISTENING_WORKER,
|
@@ -18,7 +18,7 @@ namespace :qc do
|
|
18
18
|
desc "Returns the number of jobs in the (default or QUEUE) queue"
|
19
19
|
task :length => :environment do
|
20
20
|
puts QC::Worker.new(
|
21
|
-
QC::
|
21
|
+
QC::QUEUE,
|
22
22
|
QC::TOP_BOUND,
|
23
23
|
QC::FORK_WORKER,
|
24
24
|
QC::LISTENING_WORKER,
|
@@ -32,7 +32,7 @@ namespace :qc do
|
|
32
32
|
end
|
33
33
|
|
34
34
|
desc "Remove queue_classic functions from database."
|
35
|
-
task :
|
35
|
+
task :drop_functions => :environment do
|
36
36
|
QC::Queries.drop_functions
|
37
37
|
end
|
38
38
|
end
|
data/lib/queue_classic/worker.rb
CHANGED
@@ -5,7 +5,7 @@ module QC
|
|
5
5
|
log("worker initialized")
|
6
6
|
@running = true
|
7
7
|
|
8
|
-
@queue = Queue.new(q_name)
|
8
|
+
@queue = Queue.new(q_name, listening_worker)
|
9
9
|
log("worker queue=#{@queue.name}")
|
10
10
|
|
11
11
|
@top_bound = top_bound
|
@@ -126,9 +126,9 @@ module QC
|
|
126
126
|
def wait(t)
|
127
127
|
if can_listen?
|
128
128
|
log("worker waiting on LISTEN")
|
129
|
-
Conn.listen
|
129
|
+
Conn.listen(@queue.chan)
|
130
130
|
Conn.wait_for_notify(t)
|
131
|
-
Conn.unlisten
|
131
|
+
Conn.unlisten(@queue.chan)
|
132
132
|
Conn.drain_notify
|
133
133
|
log("worker finished LISTEN")
|
134
134
|
else
|
data/readme.md
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# queue_classic
|
2
2
|
|
3
|
-
v2.0.
|
3
|
+
v2.0.0rc4
|
4
4
|
|
5
5
|
queue_classic is a PostgreSQL-backed queueing library that is focused on
|
6
6
|
concurrent job locking, minimizing database load & providing a simple &
|
@@ -30,7 +30,7 @@ distribute jobs to worker processes, then queue_classic is exactly what you need
|
|
30
30
|
|
31
31
|
The Heroku Postgres team uses queue_classic to monitor the health of
|
32
32
|
customer databases. They process 200 jobs per second using a [fugu](https://postgres.heroku.com/pricing)
|
33
|
-
database. They chose queue_classic because of
|
33
|
+
database. They chose queue_classic because of its simplicity and reliability.
|
34
34
|
|
35
35
|
### Cloudapp
|
36
36
|
|
@@ -93,7 +93,7 @@ class CreateJobsTable < ActiveRecord::Migration
|
|
93
93
|
|
94
94
|
def self.up
|
95
95
|
create_table :queue_classic_jobs do |t|
|
96
|
-
t.
|
96
|
+
t.string :q_name
|
97
97
|
t.string :method
|
98
98
|
t.text :args
|
99
99
|
t.timestamp :locked_at
|
@@ -320,7 +320,7 @@ worker.start
|
|
320
320
|
##### General Idea
|
321
321
|
|
322
322
|
The worker class (QC::Worker) is designed to be extended via inheritance. Any of
|
323
|
-
|
323
|
+
its methods should be considered for extension. There are a few in particular
|
324
324
|
that act as stubs in hopes that the user will override them. Such methods
|
325
325
|
include: `handle_failure() and setup_child()`. See the section near the bottom
|
326
326
|
for a detailed descriptor of how to subclass the worker.
|
data/test/worker_test.rb
CHANGED
@@ -75,6 +75,15 @@ class WorkerTest < QCTest
|
|
75
75
|
assert_equal(0, worker.failed_count)
|
76
76
|
end
|
77
77
|
|
78
|
+
def test_worker_listens_on_chan
|
79
|
+
p_queue = QC::Queue.new("priority_queue")
|
80
|
+
p_queue.enqueue("TestObject.two_args", "1", 2)
|
81
|
+
worker = TestWorker.new("priority_queue", 1, false, true, 1)
|
82
|
+
r = worker.work
|
83
|
+
assert_equal(["1", 2], r)
|
84
|
+
assert_equal(0, worker.failed_count)
|
85
|
+
end
|
86
|
+
|
78
87
|
def test_worker_ueses_one_conn
|
79
88
|
QC.enqueue("TestObject.no_args")
|
80
89
|
worker = TestWorker.new("default", 1, false, false, 1)
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: queue_classic
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.0.
|
4
|
+
version: 2.0.0rc5
|
5
5
|
prerelease: 5
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -13,7 +13,7 @@ date: 2012-02-29 00:00:00.000000000Z
|
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: pg
|
16
|
-
requirement: &
|
16
|
+
requirement: &25213420 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ~>
|
@@ -21,7 +21,7 @@ dependencies:
|
|
21
21
|
version: 0.13.2
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *25213420
|
25
25
|
description: queue_classic is a queueing library for Ruby apps. (Rails, Sinatra, Etc...)
|
26
26
|
queue_classic features asynchronous job polling, database maintained locks and no
|
27
27
|
ridiculous dependencies. As a matter of fact, queue_classic only requires pg.
|