web_task_runner 0.0.1 → 0.0.3
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 +1 -1
- data/Rakefile +5 -0
- data/lib/web_task_runner.rb +12 -10
- data/lib/web_task_runner/task_worker.rb +1 -1
- data/lib/web_task_runner/version.rb +2 -4
- data/web_task_runner.gemspec +4 -3
- metadata +23 -9
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: bdec9baba18e0b759dc963ce14a40a2ca43e2d0b
|
4
|
+
data.tar.gz: 05347f39262584e75fdd616d97a392a7bcfc0a3c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7454a52b416e09857ca43f4efc25a45b18afab282126adc360141852e546037d46cfdedff700ae8a3875ee0a80df532ac709fbaf5535cbd293be88c2ddd81610
|
7
|
+
data.tar.gz: 27b3f5da7619976c9fe65d7ff843b3f952402795cc0019c7373c29c95038d73cd5988c0bb8ad7610847e7f09dda9910ef230971df9e8d3d6c93a125e9cb90046
|
data/README.md
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# WebTaskRunner
|
1
|
+
# WebTaskRunner [](http://badge.fury.io/rb/web_task_runner) [](https://travis-ci.org/Neson/web_task_runner) [](http://inch-ci.org/github/Neson/web_task_runner)
|
2
2
|
|
3
3
|
Web wrapper to run a specific task with [Sidekiq](http://sidekiq.org/).
|
4
4
|
Provides HTTP API to start, stop, get status of the task running in background,
|
data/Rakefile
CHANGED
data/lib/web_task_runner.rb
CHANGED
@@ -9,6 +9,8 @@ require "web_task_runner/redis_module"
|
|
9
9
|
require "web_task_runner/task_worker"
|
10
10
|
|
11
11
|
class WebTaskRunner < Sinatra::Application
|
12
|
+
VERSION = WebTaskRunnerVersion::VERSION
|
13
|
+
|
12
14
|
@@jobs = []
|
13
15
|
|
14
16
|
def self.jobs
|
@@ -46,13 +48,13 @@ class WebTaskRunner < Sinatra::Application
|
|
46
48
|
return 'kill'
|
47
49
|
end
|
48
50
|
|
49
|
-
# Report that a
|
51
|
+
# Report that a job has been done, call this in each job after
|
50
52
|
# the work has done
|
51
|
-
def self.
|
53
|
+
def self.job_ended(all: false)
|
52
54
|
if all
|
53
55
|
WebTaskRunner::RedisModule.redis.set('task:working_jobs', 0)
|
54
56
|
else
|
55
|
-
# decrease the working
|
57
|
+
# decrease the working jobss count
|
56
58
|
WebTaskRunner::RedisModule.redis.decr('task:working_jobs')
|
57
59
|
end
|
58
60
|
|
@@ -64,11 +66,11 @@ class WebTaskRunner < Sinatra::Application
|
|
64
66
|
end
|
65
67
|
|
66
68
|
# Sets the progress of the current work
|
67
|
-
# It can be used like this in the worker: +WebTaskRunner.
|
69
|
+
# It can be used like this in the worker: +WebTaskRunner.job_2_progress = 0.8+
|
68
70
|
1000.times do |i|
|
69
71
|
i += 1
|
70
72
|
define_singleton_method("job_#{i}_progress=") do |progress|
|
71
|
-
WebTaskRunner::RedisModule.redis.set("task:
|
73
|
+
WebTaskRunner::RedisModule.redis.set("task:job_#{i}_progress", progress)
|
72
74
|
end
|
73
75
|
end
|
74
76
|
|
@@ -78,7 +80,7 @@ class WebTaskRunner < Sinatra::Application
|
|
78
80
|
WebTaskRunner::RedisModule.redis.set('task:state', 'working')
|
79
81
|
WebTaskRunner::RedisModule.redis.set('task:started_at', Time.now)
|
80
82
|
|
81
|
-
# Set the count of
|
83
|
+
# Set the count of jobs that should be started
|
82
84
|
jobs_count = @@jobs.count
|
83
85
|
|
84
86
|
# Start the worker here
|
@@ -87,10 +89,10 @@ class WebTaskRunner < Sinatra::Application
|
|
87
89
|
WebTaskRunner::RedisModule.redis.set('task:task_jobs', jobs_count)
|
88
90
|
WebTaskRunner::RedisModule.redis.set('task:working_jobs', jobs_count)
|
89
91
|
|
90
|
-
# Reset the progress of each
|
92
|
+
# Reset the progress of each job
|
91
93
|
jobs_count.times do |i|
|
92
94
|
i -= 1
|
93
|
-
WebTaskRunner::RedisModule.redis.set("task:
|
95
|
+
WebTaskRunner::RedisModule.redis.set("task:job_#{i}_progress", 0)
|
94
96
|
end
|
95
97
|
end
|
96
98
|
|
@@ -138,12 +140,12 @@ class WebTaskRunner < Sinatra::Application
|
|
138
140
|
def self.task_progress
|
139
141
|
return nil if current_state == 'idle'
|
140
142
|
task_jobs = WebTaskRunner::RedisModule.redis.get('task:task_jobs').to_i
|
141
|
-
return nil
|
143
|
+
return nil if task_jobs < 1
|
142
144
|
total_progress = 0.0
|
143
145
|
|
144
146
|
task_jobs.times do |i|
|
145
147
|
i += 1
|
146
|
-
total_progress += WebTaskRunner::RedisModule.redis.get("task:
|
148
|
+
total_progress += WebTaskRunner::RedisModule.redis.get("task:job_#{i}_progress").to_f
|
147
149
|
end
|
148
150
|
|
149
151
|
total_progress / task_jobs.to_f
|
data/web_task_runner.gemspec
CHANGED
@@ -5,7 +5,7 @@ require 'web_task_runner/version'
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |spec|
|
7
7
|
spec.name = "web_task_runner"
|
8
|
-
spec.version =
|
8
|
+
spec.version = WebTaskRunnerVersion::VERSION
|
9
9
|
spec.authors = ["Neson"]
|
10
10
|
spec.email = ["neson@dex.tw"]
|
11
11
|
|
@@ -37,6 +37,7 @@ Gem::Specification.new do |spec|
|
|
37
37
|
# Utilities
|
38
38
|
spec.add_dependency "dotenv"
|
39
39
|
|
40
|
-
spec.add_development_dependency "bundler"
|
41
|
-
spec.add_development_dependency "rake"
|
40
|
+
spec.add_development_dependency "bundler"
|
41
|
+
spec.add_development_dependency "rake"
|
42
|
+
spec.add_development_dependency "rspec"
|
42
43
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
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.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Neson
|
@@ -84,30 +84,44 @@ dependencies:
|
|
84
84
|
name: bundler
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
86
86
|
requirements:
|
87
|
-
- - "
|
87
|
+
- - ">="
|
88
88
|
- !ruby/object:Gem::Version
|
89
|
-
version: '
|
89
|
+
version: '0'
|
90
90
|
type: :development
|
91
91
|
prerelease: false
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
93
93
|
requirements:
|
94
|
-
- - "
|
94
|
+
- - ">="
|
95
95
|
- !ruby/object:Gem::Version
|
96
|
-
version: '
|
96
|
+
version: '0'
|
97
97
|
- !ruby/object:Gem::Dependency
|
98
98
|
name: rake
|
99
99
|
requirement: !ruby/object:Gem::Requirement
|
100
100
|
requirements:
|
101
|
-
- - "
|
101
|
+
- - ">="
|
102
102
|
- !ruby/object:Gem::Version
|
103
|
-
version: '
|
103
|
+
version: '0'
|
104
104
|
type: :development
|
105
105
|
prerelease: false
|
106
106
|
version_requirements: !ruby/object:Gem::Requirement
|
107
107
|
requirements:
|
108
|
-
- - "
|
108
|
+
- - ">="
|
109
109
|
- !ruby/object:Gem::Version
|
110
|
-
version: '
|
110
|
+
version: '0'
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: rspec
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - ">="
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '0'
|
118
|
+
type: :development
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - ">="
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: '0'
|
111
125
|
description: Web wrapper to run a specific task with Sidekiq. Provides HTTP API to
|
112
126
|
start, stop, get status of the task running in background, and is deployable to
|
113
127
|
cloud platforms like Heroku.
|