класс ActiveJob::QueueAdapters::AsyncAdapter
Асинхронный адаптер Active Job
Асинхронный адаптер выполняет задания в пуле потоков внутри процесса.
Это адаптер очереди по умолчанию. Он хорошо подходит для разработки и тестирования, поскольку не требует внешней инфраструктуры, но плохо подходит для production, поскольку при перезапуске удаляет ожидающие задания.
Чтобы использовать этот адаптер, задайте адаптер очереди как :async:
config.active_job.queue_adapter = :async
Чтобы настроить пул потоков адаптера, создайте экземпляр адаптера и передайте собственную конфигурацию:
config.active_job.queue_adapter = ActiveJob::QueueAdapters::AsyncAdapter.new \ min_threads: 1, max_threads: 2 * Concurrent.processor_count, idletime: 600.seconds
Адаптер использует пул потоков Concurrent Ruby для планирования и выполнения заданий. Поскольку задания используют общий пул потоков, длительные задания будут блокировать кратковременные. Подходит для разработки и тестирования; не подходит для production.
Открытые методы класса
# File activejob/lib/active_job/queue_adapters/async_adapter.rb, line 35 def initialize(**executor_options) @scheduler = Scheduler.new(**executor_options) end
См. Concurrent::ThreadPoolExecutor, чтобы узнать о параметрах исполнителя.
© 2004–2021 David Heinemeier Hansson
Licensed under the MIT License.