mirror of
https://github.com/plashchynski/crono.git
synced 2026-04-21 00:11:34 +02:00
Job refactoring
This commit is contained in:
@@ -38,14 +38,8 @@ module Crono
|
|||||||
|
|
||||||
def save
|
def save
|
||||||
@semaphore.synchronize do
|
@semaphore.synchronize do
|
||||||
log = model.reload.log || ''
|
update_model
|
||||||
log << job_log.string
|
clear_job_log
|
||||||
job_log.truncate(job_log.rewind)
|
|
||||||
model.update(
|
|
||||||
last_performed_at: last_performed_at,
|
|
||||||
log: log,
|
|
||||||
healthy: healthy
|
|
||||||
)
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -55,21 +49,40 @@ module Crono
|
|||||||
|
|
||||||
private
|
private
|
||||||
|
|
||||||
|
def clear_job_log
|
||||||
|
job_log.truncate(job_log.rewind)
|
||||||
|
end
|
||||||
|
|
||||||
|
def update_model
|
||||||
|
saved_log = model.reload.log || ''
|
||||||
|
log_to_save = saved_log + job_log.string
|
||||||
|
model.update(last_performed_at: last_performed_at, log: log_to_save,
|
||||||
|
healthy: healthy)
|
||||||
|
end
|
||||||
|
|
||||||
def perform_job
|
def perform_job
|
||||||
performer.new.perform
|
performer.new.perform
|
||||||
finished_time_sec = format('%.2f', Time.now - last_performed_at)
|
finished_time_sec = format('%.2f', Time.now - last_performed_at)
|
||||||
rescue StandardError => e
|
rescue StandardError => e
|
||||||
log_error "Finished #{performer} in #{finished_time_sec} seconds"\
|
handle_job_fail(e, finished_time_sec)
|
||||||
"with error: #{e.message}"
|
|
||||||
log_error e.backtrace.join("\n")
|
|
||||||
self.healthy = false
|
|
||||||
else
|
else
|
||||||
self.healthy = true
|
handle_job_success(finished_time_sec)
|
||||||
log "Finished #{performer} in #{finished_time_sec} seconds"
|
|
||||||
ensure
|
ensure
|
||||||
save
|
save
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def handle_job_fail(exception, finished_time_sec)
|
||||||
|
self.healthy = false
|
||||||
|
log_error "Finished #{performer} in #{finished_time_sec} seconds"\
|
||||||
|
"with error: #{exception.message}"
|
||||||
|
log_error exception.backtrace.join("\n")
|
||||||
|
end
|
||||||
|
|
||||||
|
def handle_job_success(finished_time_sec)
|
||||||
|
self.healthy = true
|
||||||
|
log "Finished #{performer} in #{finished_time_sec} seconds"
|
||||||
|
end
|
||||||
|
|
||||||
def log_error(message)
|
def log_error(message)
|
||||||
log(message, Logger::ERROR)
|
log(message, Logger::ERROR)
|
||||||
end
|
end
|
||||||
|
|||||||
Reference in New Issue
Block a user