app/models/scheduled_task.rb in tasks_scheduler-0.0.8 vs app/models/scheduled_task.rb in tasks_scheduler-0.0.9
- old
+ new
@@ -4,24 +4,37 @@
include ::ScheduledTask::Checker
include ::ScheduledTask::Log
include ::ScheduledTask::Runner
include ::ScheduledTask::Status
+ DEFAULT_TIMEOUT_ENVVAR_NAME = 'TASKS_SCHEDULER_TIMEOUT'.freeze
+ DEFAULT_TIMEOUT = 12.hours
+
class << self
def rake_tasks
@rake_tasks ||= begin
Rails.application.load_tasks
Rake.application.tasks.map(&:name)
end
end
+
+ def timeout
+ @timeout ||= begin
+ r = Integer(ENV[DEFAULT_TIMEOUT_ENVVAR_NAME])
+ r > 0 ? r.seconds : DEFAULT_TIMEOUT
+ rescue ArgumentError, TypeError
+ DEFAULT_TIMEOUT
+ end
+ end
end
STATUS_RUNNING = 'running'
STATUS_FAILED = 'failed'
STATUS_WAITING = 'waiting'
STATUS_ABORTED = 'aborted'
+ STATUS_TIMEOUT = 'timeout'
- LAST_FAIL_STATUSES = [STATUS_FAILED, STATUS_ABORTED]
+ LAST_FAIL_STATUSES = [STATUS_FAILED, STATUS_ABORTED, STATUS_TIMEOUT]
validates :scheduling, presence: true, 'tasks_scheduler/cron_scheduling': true
validates :task, presence: true, inclusion: { in: rake_tasks }
validates :last_fail_status, allow_blank: true, inclusion: { in: LAST_FAIL_STATUSES }