web_task_runner 0.0.5 → 0.0.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|