web_task_runner 0.0.1 → 0.0.3
Sign up to get free protection for your applications and to get access to all the features.
- 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 [![Gem Version](https://badge.fury.io/rb/web_task_runner.svg)](http://badge.fury.io/rb/web_task_runner) [![Build Status](https://travis-ci.org/Neson/web_task_runner.svg?branch=master)](https://travis-ci.org/Neson/web_task_runner) [![Documentation Status](http://inch-ci.org/github/Neson/web_task_runner.svg?branch=master)](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.
|