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.}")
end
end
Defined Under Namespace
Modules: SolidQueue