Class: Asynq::Client
- Inherits:
-
Object
- Object
- Asynq::Client
- Defined in:
- lib/asynq.rb
Overview
An Asynq::Client can push jobs to Redis
ac = Asynq::Client.new ac.enqueue(MyJob, “some args”, 123).with_options(queue: “easy”).now ac.enqueue(MyJob, “some args”, 123).with_options(queue: “easy”).in(10.minutes)
Defined Under Namespace
Instance Method Summary collapse
-
#enqueue(klass) ⇒ Object
asynq = Asynq.new result = asynq.enqueue(“MyJob”).with_args(123, “bob”).with_options(queue: “high”).in(30.seconds) result = asynq.enqueue(MyJob).with_args(123, “bob”).now.
- #in(seconds, payload) ⇒ Object
-
#initialize(redis = RedisClient.new) ⇒ Client
constructor
A new instance of Client.
- #now(payload) ⇒ Object
- #now_in_millis ⇒ Object
- #with {|@redis| ... } ⇒ Object
Constructor Details
#initialize(redis = RedisClient.new) ⇒ Client
Returns a new instance of Client.
40 41 42 |
# File 'lib/asynq.rb', line 40 def initialize(redis = RedisClient.new, &) @redis = redis end |
Instance Method Details
#enqueue(klass) ⇒ Object
asynq = Asynq.new result = asynq.enqueue(“MyJob”).with_args(123, “bob”).with_options(queue: “high”).in(30.seconds) result = asynq.enqueue(MyJob).with_args(123, “bob”).now
76 77 78 79 80 81 82 83 84 85 |
# File 'lib/asynq.rb', line 76 def enqueue(klass) payload = {} payload["jid"] = SecureRandom.hex(12) payload["class"] = klass.to_s payload["queue"] = "default" payload["args"] = [] payload["created_at"] = now_in_millis Candidate.new(self, payload) end |
#in(seconds, payload) ⇒ Object
100 101 102 103 104 105 106 107 |
# File 'lib/asynq.rb', line 100 def in(seconds, payload) str = JSON.generate(payload) at = (Time.now + seconds).to_f.to_s with do |conn| conn.call("zadd", "schedule", at, str) end Result.new(payload["jid"]) end |
#now(payload) ⇒ Object
87 88 89 90 91 92 93 94 95 96 97 98 |
# File 'lib/asynq.rb', line 87 def now(payload) payload["enqueued_at"] = now_in_millis str = JSON.generate(payload) qname = payload["queue"] with do |conn| conn.multi do |m| m.call("sadd", "queues", qname) m.call("rpush", "queue:#{qname}", str) end end Result.new(payload["jid"]) end |
#now_in_millis ⇒ Object
109 |
# File 'lib/asynq.rb', line 109 def now_in_millis = ::Process.clock_gettime(::Process::CLOCK_REALTIME, :millisecond) |
#with {|@redis| ... } ⇒ Object
110 |
# File 'lib/asynq.rb', line 110 def with(&) = yield @redis |