rask 0.0.5 → 0.0.6
Sign up to get free protection for your applications and to get access to all the features.
- data/History.txt +3 -0
- data/README.rdoc +10 -0
- data/lib/rask.rb +19 -6
- metadata +2 -2
data/History.txt
CHANGED
data/README.rdoc
CHANGED
@@ -145,6 +145,16 @@ kill -TERM されたプロセスは、そのタスクのステートマシンの
|
|
145
145
|
ruby1.8.7で作ってる
|
146
146
|
|
147
147
|
== Changelog
|
148
|
+
* v0.0.6
|
149
|
+
* read が落ちるバグの修正
|
150
|
+
* タスク内で発生した例外コールバックの追加
|
151
|
+
* Task::on_exception will be called when some exception raised in Task Processing.
|
152
|
+
* v0.0.5
|
153
|
+
* rails にて複数タスク実行可能に修正
|
154
|
+
* 例外をキャッチするようにした
|
155
|
+
* 落ちた場合はデフォルトで BASE_DIR/suspended/ フォルダにタスクファイルを移動するのでコード修正後戻せば復帰可能
|
156
|
+
* If exception raised, Rask delete the task and keep the task file to "BASE_DIR/suspended" directory.
|
157
|
+
* Rails generator is fixed.
|
148
158
|
* v0.0.4
|
149
159
|
* Integration for Ruby On Rails
|
150
160
|
* rails のジェネレータ化、プラグイン化コードの統合
|
data/lib/rask.rb
CHANGED
@@ -126,6 +126,10 @@ module Rask
|
|
126
126
|
@state == nil
|
127
127
|
end
|
128
128
|
|
129
|
+
def on_exception
|
130
|
+
Rask.suspend(@task_id) # default to suspend
|
131
|
+
end
|
132
|
+
|
129
133
|
end
|
130
134
|
|
131
135
|
|
@@ -208,7 +212,7 @@ module Rask
|
|
208
212
|
print $@.join("\n") + "\n--------------------------------------------\n"
|
209
213
|
f.flock(File::LOCK_UN)
|
210
214
|
f.close
|
211
|
-
|
215
|
+
task.on_exception
|
212
216
|
end
|
213
217
|
end
|
214
218
|
|
@@ -227,10 +231,18 @@ module Rask
|
|
227
231
|
task = Marshal.restore(f)
|
228
232
|
f.flock(File::LOCK_UN)
|
229
233
|
f.close
|
230
|
-
task.read_only
|
234
|
+
task.read_only
|
231
235
|
task
|
232
236
|
end
|
233
237
|
|
238
|
+
#
|
239
|
+
# ===
|
240
|
+
# if you met unrecovery error. you can suspend the task.
|
241
|
+
#
|
242
|
+
def self.suspend(task_id)
|
243
|
+
FileUtils.mv(task_path(task_id), @@base_dir+"/suspended/")
|
244
|
+
end
|
245
|
+
|
234
246
|
#
|
235
247
|
# === Get task_id list.
|
236
248
|
# [options]
|
@@ -286,7 +298,7 @@ module Rask
|
|
286
298
|
# create worker threads
|
287
299
|
threads = []
|
288
300
|
for i in 1..@@thread_max_count do
|
289
|
-
threads << Thread::new(i) { |thread_id| thread_proc(thread_id, options
|
301
|
+
threads << Thread::new(i) { |thread_id| thread_proc(thread_id, options) }
|
290
302
|
end
|
291
303
|
|
292
304
|
Signal.trap(:TERM) {safe_exit(options[:process_name])}
|
@@ -318,7 +330,7 @@ private
|
|
318
330
|
end
|
319
331
|
|
320
332
|
#
|
321
|
-
def self.thread_proc(thread_id,
|
333
|
+
def self.thread_proc(thread_id, options = {})
|
322
334
|
@@thread_count += 1
|
323
335
|
print "[Rask] Thread Start ID:#{thread_id}\n"
|
324
336
|
while !@@terminated
|
@@ -332,10 +344,11 @@ private
|
|
332
344
|
@@locker.synchronize do
|
333
345
|
@@processing.delete(d)
|
334
346
|
end
|
347
|
+
sleep(options[:worker_sleep])
|
335
348
|
else
|
336
|
-
|
349
|
+
# print "no data in queue\n"
|
350
|
+
sleep(options[:sleep])
|
337
351
|
end
|
338
|
-
sleep(worker_sleep)
|
339
352
|
end
|
340
353
|
print "[Rask] Thread Exit ID:#{thread_id}\n"
|
341
354
|
@@thread_count -= 1
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rask
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- mewlist / Hidenori Doi
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2010-03-
|
12
|
+
date: 2010-03-11 00:00:00 +09:00
|
13
13
|
default_executable:
|
14
14
|
dependencies: []
|
15
15
|
|