Class: Gearman::TaskSet
- Inherits:
-
Object
- Object
- Gearman::TaskSet
- Includes:
- Logging
- Defined in:
- lib/gearman/task_set.rb
Instance Method Summary collapse
-
#add_task(task) ⇒ Object
Add a new task to this TaskSet.
-
#initialize(client) ⇒ TaskSet
constructor
A new instance of TaskSet.
-
#wait(timeout = 1) ⇒ Object
Wait for all tasks in the set to finish.
-
#wait_forever ⇒ Object
Wait for all tasks in set to finish, with no timeout.
Methods included from Logging
Constructor Details
#initialize(client) ⇒ TaskSet
Returns a new instance of TaskSet.
7 8 9 10 11 |
# File 'lib/gearman/task_set.rb', line 7 def initialize(client) @client = client @tasks_in_progress = [] @finished_tasks = [] end |
Instance Method Details
#add_task(task) ⇒ Object
Add a new task to this TaskSet.
18 19 20 |
# File 'lib/gearman/task_set.rb', line 18 def add_task(task) @tasks_in_progress << task end |
#wait(timeout = 1) ⇒ Object
Wait for all tasks in the set to finish.
26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 |
# File 'lib/gearman/task_set.rb', line 26 def wait(timeout = 1) end_time = if timeout Time.now.to_f + timeout else nil end while @tasks_in_progress.length > 0 remaining = if end_time (t = end_time - Time.now.to_f) > 0 ? t : 0 else nil end begin task = @tasks_in_progress.pop if @client.submit_job(task, true, remaining) @finished_tasks << task end rescue SocketTimeoutError return false end end @finished_tasks.each do |t| if ( (t.background.nil? || t.background == false) && !t.successful) logger.warn 'GearmanRuby: TaskSet failed' return false end end true end |
#wait_forever ⇒ Object
Wait for all tasks in set to finish, with no timeout
61 62 63 |
# File 'lib/gearman/task_set.rb', line 61 def wait_forever wait(nil) end |