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