Class: Asynq::Client

Inherits:
Object
  • Object
show all
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

Classes: Candidate, Result

Instance Method Summary collapse

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_millisObject



109
# File 'lib/asynq.rb', line 109

def now_in_millis = ::Process.clock_gettime(::Process::CLOCK_REALTIME, :millisecond)

#with {|@redis| ... } ⇒ Object

Yields:

  • (@redis)


110
# File 'lib/asynq.rb', line 110

def with(&) = yield @redis