Module: PatientHttp

Defined in:
lib/patient_http/solid_queue.rb,
lib/patient_http/solid_queue/engine.rb,
lib/patient_http/solid_queue/record.rb,
lib/patient_http/solid_queue/context.rb,
lib/patient_http/solid_queue/gc_lock.rb,
lib/patient_http/solid_queue/request_job.rb,
lib/patient_http/solid_queue/callback_job.rb,
lib/patient_http/solid_queue/task_handler.rb,
lib/patient_http/solid_queue/task_monitor.rb,
lib/patient_http/solid_queue/configuration.rb,
lib/patient_http/solid_queue/lifecycle_hooks.rb,
lib/patient_http/solid_queue/inflight_request.rb,
lib/patient_http/solid_queue/request_executor.rb,
lib/patient_http/solid_queue/processor_observer.rb,
lib/patient_http/solid_queue/task_monitor_thread.rb,
lib/patient_http/solid_queue/process_registration.rb

Overview

Main module for the Solid Queue Async HTTP gem.

This gem provides a mechanism to offload long-running HTTP requests from Solid Queue workers to a dedicated async I/O processor running in the same process, freeing worker threads immediately while HTTP requests are in flight.

Usage

request = PatientHttp::Request.new(:get, "https://api.example.com/users/123")
PatientHttp::SolidQueue.execute(
request,
callback: MyCallback,
callback_args: {user_id: 123}
)

Define a callback service class with on_complete and on_error methods:

class MyCallback
def on_complete(response)
  user_id = response.callback_args[:user_id]
  User.find(user_id).update!(data: response.json)
end

def on_error(error)
  Rails.logger.error("Request failed: #{error.message}")
end
end

Defined Under Namespace

Modules: SolidQueue