resque_admin-scheduler 1.0.4 → 1.0.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- metadata +63 -39
- data/bin/migrate_to_timestamps_set.rb +0 -16
- data/exe/resque-scheduler +0 -5
- data/lib/resque-scheduler.rb +0 -4
- data/lib/resque_admin/scheduler.rb +0 -447
- data/lib/resque_admin/scheduler/cli.rb +0 -147
- data/lib/resque_admin/scheduler/configuration.rb +0 -73
- data/lib/resque_admin/scheduler/delaying_extensions.rb +0 -324
- data/lib/resque_admin/scheduler/env.rb +0 -89
- data/lib/resque_admin/scheduler/extension.rb +0 -13
- data/lib/resque_admin/scheduler/failure_handler.rb +0 -11
- data/lib/resque_admin/scheduler/lock.rb +0 -4
- data/lib/resque_admin/scheduler/lock/base.rb +0 -61
- data/lib/resque_admin/scheduler/lock/basic.rb +0 -27
- data/lib/resque_admin/scheduler/lock/resilient.rb +0 -78
- data/lib/resque_admin/scheduler/locking.rb +0 -104
- data/lib/resque_admin/scheduler/logger_builder.rb +0 -72
- data/lib/resque_admin/scheduler/plugin.rb +0 -31
- data/lib/resque_admin/scheduler/scheduling_extensions.rb +0 -141
- data/lib/resque_admin/scheduler/server.rb +0 -268
- data/lib/resque_admin/scheduler/server/views/delayed.erb +0 -63
- data/lib/resque_admin/scheduler/server/views/delayed_schedules.erb +0 -20
- data/lib/resque_admin/scheduler/server/views/delayed_timestamp.erb +0 -26
- data/lib/resque_admin/scheduler/server/views/requeue-params.erb +0 -23
- data/lib/resque_admin/scheduler/server/views/scheduler.erb +0 -58
- data/lib/resque_admin/scheduler/server/views/search.erb +0 -72
- data/lib/resque_admin/scheduler/server/views/search_form.erb +0 -8
- data/lib/resque_admin/scheduler/signal_handling.rb +0 -40
- data/lib/resque_admin/scheduler/tasks.rb +0 -25
- data/lib/resque_admin/scheduler/util.rb +0 -39
- data/lib/resque_admin/scheduler/version.rb +0 -7
- data/tasks/resque_scheduler.rake +0 -2
@@ -1,20 +0,0 @@
|
|
1
|
-
<h1>Delayed jobs scheduled for <%= params[:klass] %> (<%= show_job_arguments(@args) %>)</h1>
|
2
|
-
|
3
|
-
<table class='jobs'>
|
4
|
-
<tr>
|
5
|
-
<th>Timestamp</th>
|
6
|
-
</tr>
|
7
|
-
|
8
|
-
<% @timestamps.each do |t| %>
|
9
|
-
<tr>
|
10
|
-
<td>
|
11
|
-
<%= Time.at(t) %>
|
12
|
-
</td>
|
13
|
-
</tr>
|
14
|
-
<% end %>
|
15
|
-
<% if @timestamps.empty? %>
|
16
|
-
<tr>
|
17
|
-
<td class='no-data'>There are no such jobs scheduled.</td>
|
18
|
-
</tr>
|
19
|
-
<% end %>
|
20
|
-
</table>
|
@@ -1,26 +0,0 @@
|
|
1
|
-
<% timestamp = params[:timestamp].to_i %>
|
2
|
-
|
3
|
-
<h1>Delayed jobs scheduled for <%= format_time(Time.at(timestamp)) %></h1>
|
4
|
-
|
5
|
-
<p class='sub'>Showing <%= start = params[:start].to_i %> to <%= start + 20 %> of <b><%=size = resque.delayed_timestamp_size(timestamp)%></b> jobs</p>
|
6
|
-
|
7
|
-
<table class='jobs'>
|
8
|
-
<tr>
|
9
|
-
<th>Class</th>
|
10
|
-
<th>Args</th>
|
11
|
-
</tr>
|
12
|
-
<% jobs = resque.delayed_timestamp_peek(timestamp, start, 20) %>
|
13
|
-
<% jobs.each do |job| %>
|
14
|
-
<tr>
|
15
|
-
<td class='class'><%= job['class'] %></td>
|
16
|
-
<td class='args'><%=h show_job_arguments(job['args']) %></td>
|
17
|
-
</tr>
|
18
|
-
<% end %>
|
19
|
-
<% if jobs.empty? %>
|
20
|
-
<tr>
|
21
|
-
<td class='no-data' colspan='2'>There are no pending jobs scheduled for this time.</td>
|
22
|
-
</tr>
|
23
|
-
<% end %>
|
24
|
-
</table>
|
25
|
-
|
26
|
-
<%= partial :next_more, :start => start, :size => size %>
|
@@ -1,23 +0,0 @@
|
|
1
|
-
<h1><%= @job_name %></h1>
|
2
|
-
|
3
|
-
<p class='intro'>
|
4
|
-
This job requires parameters:
|
5
|
-
</p>
|
6
|
-
|
7
|
-
<form style="float:left" action="<%= u "/schedule/requeue_with_params" %>" method="post">
|
8
|
-
<table>
|
9
|
-
<% @parameters.each do |key, value| %>
|
10
|
-
<% value ||= {} %>
|
11
|
-
<tr>
|
12
|
-
<td>
|
13
|
-
<%= key %>
|
14
|
-
<% if value['description'] || value[:description] %>
|
15
|
-
<span style="border-bottom:1px dotted;" title="<%=value ['description'] || value[:description] %>">(?)</span>
|
16
|
-
<% end %>:
|
17
|
-
</td>
|
18
|
-
<td><input type="text" name="<%= key %>" value="<%= value['default'] || value[:default] %>"></td>
|
19
|
-
<% end %>
|
20
|
-
</table>
|
21
|
-
<input type="hidden" name="job_name" value="<%= @job_name %>">
|
22
|
-
<input type="submit" value="Queue now">
|
23
|
-
</form>
|
@@ -1,58 +0,0 @@
|
|
1
|
-
<h1>Schedule</h1>
|
2
|
-
|
3
|
-
<p class='intro'>
|
4
|
-
The list below contains all scheduled jobs. Click "Queue now" to queue
|
5
|
-
a job immediately.
|
6
|
-
<br/> Server local time: <%= Time.now %>
|
7
|
-
<br/> Server Environment: <%= ResqueAdmin::Scheduler.env %>
|
8
|
-
<br/> Current master: <%= ResqueAdmin.redis.get(ResqueAdmin::Scheduler.master_lock.key) %>
|
9
|
-
</p>
|
10
|
-
<p class='intro'>
|
11
|
-
The highlighted jobs are skipped for current environment.
|
12
|
-
</p>
|
13
|
-
<div style="overflow-y: auto; width:100%; padding: 0px 5px;">
|
14
|
-
<table>
|
15
|
-
<tr>
|
16
|
-
<th>Index</th>
|
17
|
-
<% if ResqueAdmin::Scheduler.dynamic %>
|
18
|
-
<th></th>
|
19
|
-
<% end %>
|
20
|
-
<th></th>
|
21
|
-
<th>Name</th>
|
22
|
-
<th>Description</th>
|
23
|
-
<th>Interval</th>
|
24
|
-
<th>Class</th>
|
25
|
-
<th>Queue</th>
|
26
|
-
<th>Arguments</th>
|
27
|
-
<th>Last Enqueued</th>
|
28
|
-
</tr>
|
29
|
-
<% ResqueAdmin.schedule.keys.sort.each_with_index do |name, index| %>
|
30
|
-
<% config = ResqueAdmin.schedule[name] %>
|
31
|
-
<tr style="<%= scheduled_in_this_env?(name) ? '' : 'color: #9F6000;background: #FEEFB3;' %>">
|
32
|
-
<td style="padding-left: 15px;"><%= index+ 1 %>.</td>
|
33
|
-
<% if ResqueAdmin::Scheduler.dynamic %>
|
34
|
-
<td style="padding-top: 12px; padding-bottom: 2px; width: 10px">
|
35
|
-
<form action="<%= u "/schedule" %>" method="post" style="margin-left: 0">
|
36
|
-
<input type="hidden" name="job_name" value="<%= h name %>">
|
37
|
-
<input type="hidden" name="_method" value="delete">
|
38
|
-
<input type="submit" value="Delete">
|
39
|
-
</form>
|
40
|
-
</td>
|
41
|
-
<% end %>
|
42
|
-
<td style="padding-top: 12px; padding-bottom: 2px; width: 10px">
|
43
|
-
<form action="<%= u "/schedule/requeue" %>" method="post" style="margin-left: 0">
|
44
|
-
<input type="hidden" name="job_name" value="<%= h name %>">
|
45
|
-
<input type="submit" value="Queue now">
|
46
|
-
</form>
|
47
|
-
</td>
|
48
|
-
<td><%= h name %></td>
|
49
|
-
<td><%= h config['description'] %></td>
|
50
|
-
<td style="white-space:nowrap"><%= h schedule_interval(config) %></td>
|
51
|
-
<td><%= h schedule_class(config) %></td>
|
52
|
-
<td><%= h config['queue'] || queue_from_class_name(config['class']) %></td>
|
53
|
-
<td><%= h show_job_arguments(config['args']) %></td>
|
54
|
-
<td><%= h ResqueAdmin.get_last_enqueued_at(name) || 'Never' %></td>
|
55
|
-
</tr>
|
56
|
-
<% end %>
|
57
|
-
</table>
|
58
|
-
</div>
|
@@ -1,72 +0,0 @@
|
|
1
|
-
<h1>Search Results</h1>
|
2
|
-
<%= scheduler_view :search_form, layout: false %>
|
3
|
-
<hr>
|
4
|
-
<% delayed = @jobs.select { |j| j['where_at'] == 'delayed' } %>
|
5
|
-
<h1>Delayed jobs</h1>
|
6
|
-
<table class='jobs'>
|
7
|
-
<tr>
|
8
|
-
<th></th>
|
9
|
-
<th></th>
|
10
|
-
<th>Timestamp</th>
|
11
|
-
<th>Class</th>
|
12
|
-
<th>Args</th>
|
13
|
-
</tr>
|
14
|
-
<% delayed.each do |job| %>
|
15
|
-
<tr>
|
16
|
-
<td>
|
17
|
-
<form action="<%= u "/delayed/queue_now" %>" method="post">
|
18
|
-
<input type="hidden" name="timestamp" value="<%= job['timestamp'].to_i %>">
|
19
|
-
<input type="submit" value="Queue now">
|
20
|
-
</form>
|
21
|
-
</td>
|
22
|
-
<td>
|
23
|
-
<form action="<%= u "/delayed/cancel_now" %>" method="post">
|
24
|
-
<input type="hidden" name="timestamp" value="<%= job['timestamp'].to_i %>">
|
25
|
-
<input type="hidden" name="klass" value="<%= job['class'] %>">
|
26
|
-
<input type="hidden" name="args" value="<%= h(ResqueAdmin.encode job['args']) %>">
|
27
|
-
<input type="submit" value="Cancel Job">
|
28
|
-
</form>
|
29
|
-
</td>
|
30
|
-
<td class='args'><%= format_time(Time.at(job['timestamp'])) %></td>
|
31
|
-
<td class='class'><%= job['class'] %></td>
|
32
|
-
<td class='args'><%= h job['args'].inspect %></td>
|
33
|
-
</tr>
|
34
|
-
<% end %>
|
35
|
-
</table>
|
36
|
-
</h1>
|
37
|
-
|
38
|
-
<% queued = @jobs.select { |j| j['where_at'] == 'queued' } %>
|
39
|
-
<h1>Queued jobs</h1>
|
40
|
-
<table class='jobs'>
|
41
|
-
<tr>
|
42
|
-
<th>Queue</th>
|
43
|
-
<th>Class</th>
|
44
|
-
<th>Args</th>
|
45
|
-
</tr>
|
46
|
-
<% queued.each do |job| %>
|
47
|
-
<tr>
|
48
|
-
<td class='class'><%= job['queue'] %></td>
|
49
|
-
<td class='class'><%= job['class'] %></td>
|
50
|
-
<td class='args'><%= h job['args'].inspect %></td>
|
51
|
-
</tr>
|
52
|
-
<% end %>
|
53
|
-
</table>
|
54
|
-
|
55
|
-
<% working = @jobs.select { |j| j['where_at'] == 'working' } %>
|
56
|
-
<h1>Working jobs</h1>
|
57
|
-
<table class='jobs'>
|
58
|
-
<tr>
|
59
|
-
<th>Queue</th>
|
60
|
-
<th>Class</th>
|
61
|
-
<th>Args</th>
|
62
|
-
</tr>
|
63
|
-
<% working.each do |job| %>
|
64
|
-
<tr>
|
65
|
-
<td class='class'><%= job['queue'] %></td>
|
66
|
-
<td class='class'><%= job['class'] %></td>
|
67
|
-
<td class='args'><%= h job['args'].inspect %></td>
|
68
|
-
</tr>
|
69
|
-
<% end %>
|
70
|
-
</table>
|
71
|
-
|
72
|
-
|
@@ -1,40 +0,0 @@
|
|
1
|
-
# vim:fileencoding=utf-8
|
2
|
-
|
3
|
-
module ResqueAdmin
|
4
|
-
module Scheduler
|
5
|
-
module SignalHandling
|
6
|
-
attr_writer :signal_queue
|
7
|
-
|
8
|
-
def signal_queue
|
9
|
-
@signal_queue ||= []
|
10
|
-
end
|
11
|
-
|
12
|
-
# For all signals, set the shutdown flag and wait for current
|
13
|
-
# poll/enqueing to finish (should be almost instant). In the
|
14
|
-
# case of sleeping, exit immediately.
|
15
|
-
def register_signal_handlers
|
16
|
-
(Signal.list.keys & %w(INT TERM USR1 USR2 QUIT)).each do |sig|
|
17
|
-
trap(sig) do
|
18
|
-
signal_queue << sig
|
19
|
-
# break sleep in the primary scheduler thread, alowing
|
20
|
-
# the signal queue to get processed as soon as possible.
|
21
|
-
@th.wakeup if @th && @th.alive?
|
22
|
-
end
|
23
|
-
end
|
24
|
-
end
|
25
|
-
|
26
|
-
def handle_signals
|
27
|
-
loop do
|
28
|
-
sig = signal_queue.shift
|
29
|
-
break unless sig
|
30
|
-
log! "Got #{sig} signal"
|
31
|
-
case sig
|
32
|
-
when 'INT', 'TERM', 'QUIT' then shutdown
|
33
|
-
when 'USR1' then print_schedule
|
34
|
-
when 'USR2' then reload_schedule!
|
35
|
-
end
|
36
|
-
end
|
37
|
-
end
|
38
|
-
end
|
39
|
-
end
|
40
|
-
end
|
@@ -1,25 +0,0 @@
|
|
1
|
-
# vim:fileencoding=utf-8
|
2
|
-
|
3
|
-
require 'resque_admin/tasks'
|
4
|
-
require 'resque-scheduler'
|
5
|
-
|
6
|
-
namespace :resque do
|
7
|
-
task :setup
|
8
|
-
|
9
|
-
def scheduler_cli
|
10
|
-
@scheduler_cli ||= ResqueAdmin::Scheduler::Cli.new(
|
11
|
-
%W(#{ENV['RESQUE_SCHEDULER_OPTIONS']})
|
12
|
-
)
|
13
|
-
end
|
14
|
-
|
15
|
-
desc 'Start ResqueAdmin Scheduler'
|
16
|
-
task scheduler: :scheduler_setup do
|
17
|
-
scheduler_cli.setup_env
|
18
|
-
scheduler_cli.run_forever
|
19
|
-
end
|
20
|
-
|
21
|
-
task :scheduler_setup do
|
22
|
-
scheduler_cli.parse_options
|
23
|
-
Rake::Task['resque:setup'].invoke unless scheduler_cli.pre_setup
|
24
|
-
end
|
25
|
-
end
|
@@ -1,39 +0,0 @@
|
|
1
|
-
# vim:fileencoding=utf-8
|
2
|
-
|
3
|
-
module ResqueAdmin
|
4
|
-
module Scheduler
|
5
|
-
class Util
|
6
|
-
# In order to upgrade to resque(1.25) which has deprecated following
|
7
|
-
# methods, we just added these usefull helpers back to use in ResqueAdmin
|
8
|
-
# Scheduler. refer to:
|
9
|
-
# https://github.com/resque/resque-scheduler/pull/273
|
10
|
-
|
11
|
-
def self.constantize(camel_cased_word)
|
12
|
-
camel_cased_word = camel_cased_word.to_s
|
13
|
-
|
14
|
-
if camel_cased_word.include?('-')
|
15
|
-
camel_cased_word = classify(camel_cased_word)
|
16
|
-
end
|
17
|
-
|
18
|
-
names = camel_cased_word.split('::')
|
19
|
-
names.shift if names.empty? || names.first.empty?
|
20
|
-
|
21
|
-
constant = Object
|
22
|
-
names.each do |name|
|
23
|
-
args = Module.method(:const_get).arity != 1 ? [false] : []
|
24
|
-
|
25
|
-
constant = if constant.const_defined?(name, *args)
|
26
|
-
constant.const_get(name)
|
27
|
-
else
|
28
|
-
constant.const_missing(name)
|
29
|
-
end
|
30
|
-
end
|
31
|
-
constant
|
32
|
-
end
|
33
|
-
|
34
|
-
def self.classify(dashed_word)
|
35
|
-
dashed_word.split('-').map(&:capitalize).join
|
36
|
-
end
|
37
|
-
end
|
38
|
-
end
|
39
|
-
end
|
data/tasks/resque_scheduler.rake
DELETED