web_task_runner 0.0.5 → 0.0.6
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +8 -4
- data/lib/web_task_runner.rb +15 -23
- data/lib/web_task_runner/task_worker.rb +4 -1
- data/lib/web_task_runner/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: db3a6ff7044e2cf38418acfb0264c2617886f6ee
|
4
|
+
data.tar.gz: 18a2e1c11ad0ba7bae013df1180282600c2d84a0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 57904e2bd566bdced869a6eb04d32d305358d86e003f745311cc8463fd497a8aa51294180498eb219594663ffcdaa7daa1f5365c8080b340488281c4ebee24ec
|
7
|
+
data.tar.gz: eb6a81d215145061e69caffda120801ac7cdbc078e760cce181993cd6d3ed728de4c0573cb6554c45885cba4cee7aac841d70070c3a4dc123c1ef0044be8278e
|
data/README.md
CHANGED
@@ -155,9 +155,11 @@ require 'web_task_runner'
|
|
155
155
|
|
156
156
|
class MyWorkOne < WebTaskRunner::TaskWorker
|
157
157
|
def exec
|
158
|
-
#
|
158
|
+
# yes - you can access all parameters passed with the request
|
159
|
+
x = params[:time] || 1
|
160
|
+
# sleep x second(s) for ten times
|
159
161
|
10.times do |i|
|
160
|
-
sleep(
|
162
|
+
sleep(x)
|
161
163
|
raise if Random.rand(100) < 2 # simulate errors
|
162
164
|
end
|
163
165
|
end
|
@@ -174,9 +176,11 @@ require 'web_task_runner'
|
|
174
176
|
|
175
177
|
class MyWorkOne < WebTaskRunner::TaskWorker
|
176
178
|
def exec
|
177
|
-
#
|
179
|
+
# yes - you can access all parameters passed with the request
|
180
|
+
x = params[:time] || 1
|
181
|
+
# sleep x second(s) for ten times
|
178
182
|
10.times do |i|
|
179
|
-
sleep(
|
183
|
+
sleep(x)
|
180
184
|
raise if Random.rand(100) < 2 # simulate errors
|
181
185
|
# report the current progress
|
182
186
|
WebTaskRunner.job_1_progress = (i + 1) / 10.0
|
data/lib/web_task_runner.rb
CHANGED
@@ -17,31 +17,25 @@ class WebTaskRunner < Sinatra::Application
|
|
17
17
|
@@jobs
|
18
18
|
end
|
19
19
|
|
20
|
-
|
21
|
-
get '/' do
|
20
|
+
before do
|
22
21
|
# Authorize the request
|
23
22
|
error 401, JSON.pretty_generate(error: 'Unauthorized') and \
|
24
23
|
return if ENV['API_KEY'] != params[:key]
|
24
|
+
end
|
25
25
|
|
26
|
+
# GET /?key=<api_key> - retrieve current state of the task runner
|
27
|
+
get '/' do
|
26
28
|
return JSON.pretty_generate(current_info)
|
27
29
|
end
|
28
30
|
|
29
31
|
# GET /?key=<api_key> - retrieve current status of the task
|
30
32
|
get '/status' do
|
31
|
-
# Authorize the request
|
32
|
-
error 401, JSON.pretty_generate(error: 'Unauthorized') and \
|
33
|
-
return if ENV['API_KEY'] != params[:key]
|
34
|
-
|
35
33
|
return JSON.pretty_generate(current_status)
|
36
34
|
end
|
37
35
|
|
38
36
|
# GET /start?key=<api_key> - start the task if idle
|
39
37
|
get '/start' do
|
40
|
-
|
41
|
-
error 401, JSON.pretty_generate(error: 'Unauthorized') and \
|
42
|
-
return if ENV['API_KEY'] != params[:key]
|
43
|
-
|
44
|
-
start_task_if_idle
|
38
|
+
start_task_if_idle(params)
|
45
39
|
|
46
40
|
link = "#{request.env['rack.url_scheme']}://#{request.env['HTTP_HOST']}/status?key=#{params[:key]}"
|
47
41
|
|
@@ -51,10 +45,6 @@ class WebTaskRunner < Sinatra::Application
|
|
51
45
|
|
52
46
|
# GET /stop?key=<api_key> - kill the working task
|
53
47
|
get '/stop' do
|
54
|
-
# Authorize the request
|
55
|
-
error 401, JSON.pretty_generate(error: 'Unauthorized') and \
|
56
|
-
return if ENV['API_KEY'] != params[:key]
|
57
|
-
|
58
48
|
kill_task
|
59
49
|
|
60
50
|
return JSON.pretty_generate(current_status)
|
@@ -88,7 +78,7 @@ class WebTaskRunner < Sinatra::Application
|
|
88
78
|
end
|
89
79
|
|
90
80
|
# Starts (or kill and restart) the task
|
91
|
-
def self.start_task
|
81
|
+
def self.start_task(params = nil)
|
92
82
|
kill_task
|
93
83
|
WebTaskRunner::RedisModule.redis.set('task:state', 'working')
|
94
84
|
WebTaskRunner::RedisModule.redis.set('task:status', 'processing')
|
@@ -98,7 +88,9 @@ class WebTaskRunner < Sinatra::Application
|
|
98
88
|
jobs_count = @@jobs.count
|
99
89
|
|
100
90
|
# Start the worker here
|
101
|
-
@@jobs.each
|
91
|
+
@@jobs.each do |job|
|
92
|
+
job.perform_async(params)
|
93
|
+
end
|
102
94
|
|
103
95
|
WebTaskRunner::RedisModule.redis.set('task:task_jobs', jobs_count)
|
104
96
|
WebTaskRunner::RedisModule.redis.set('task:working_jobs', jobs_count)
|
@@ -110,18 +102,18 @@ class WebTaskRunner < Sinatra::Application
|
|
110
102
|
end
|
111
103
|
end
|
112
104
|
|
113
|
-
def start_task # :nodoc:
|
114
|
-
WebTaskRunner.start_task
|
105
|
+
def start_task(params = nil) # :nodoc:
|
106
|
+
WebTaskRunner.start_task(params)
|
115
107
|
end
|
116
108
|
|
117
109
|
# Starts the task if it's not running
|
118
|
-
def self.start_task_if_idle
|
110
|
+
def self.start_task_if_idle(params = nil)
|
119
111
|
return unless current_state == 'idle'
|
120
|
-
start_task
|
112
|
+
start_task(params)
|
121
113
|
end
|
122
114
|
|
123
|
-
def start_task_if_idle # :nodoc:
|
124
|
-
WebTaskRunner.start_task_if_idle
|
115
|
+
def start_task_if_idle(params = nil) # :nodoc:
|
116
|
+
WebTaskRunner.start_task_if_idle(params)
|
125
117
|
end
|
126
118
|
|
127
119
|
# Kills the running task
|
@@ -9,8 +9,11 @@ class WebTaskRunner < Sinatra::Application
|
|
9
9
|
include Sidekiq::Worker
|
10
10
|
include Sidekiq::Status::Worker
|
11
11
|
|
12
|
-
|
12
|
+
attr_accessor :params
|
13
|
+
|
14
|
+
def perform(params)
|
13
15
|
return if WebTaskRunner.current_state == 'idle'
|
16
|
+
self.params = params || {}
|
14
17
|
|
15
18
|
exec
|
16
19
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: web_task_runner
|
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
|
- Neson
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-05-
|
11
|
+
date: 2015-05-31 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: sinatra
|