Sha256: 1e012384817cab4411b8107da452d311c00b34585597294daf8ac0ba3503e6be
Contents?: true
Size: 1.21 KB
Versions: 1
Compression:
Stored size: 1.21 KB
Contents
module Asyncapi::Server class JobStatusNotifierWorker include Sidekiq::Worker sidekiq_options retry: false MAX_RETRIES = 2 def perform(job_id, job_message, retries=0) @job = Job.find(job_id) report_job_status(job_message) unless @response.code == 200 if retries <= MAX_RETRIES @jid = JobStatusNotifierWorker.perform_async(job_id, job_message, retries+1) else raise format_error("Something went wrong while poking #{@job.callback_url}") end end end private def report_job_status(job_message) @response ||= Typhoeus.put( @job.callback_url, timeout: 60, connecttimeout: 60, body: { job: { status: @job.status, message: @job_message, secret: @job.secret, } }.to_json, headers: { "Content-Type" => "application/json", Accept: "application/json" } ) end def format_error(error) [ error, "JobID: #{@job.id}", "Next Attempt: #{@jid}", "HTTP Status: #{@response.code}", "HTTP Response: #{@response.inspect}", ].join("\n") end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
asyncapi-server-1.3.2 | app/workers/asyncapi/server/job_status_notifier_worker.rb |