这是因为Active Job默认开启了“inline”模式,这就意味着job会立即执行而不是enqueue到后台队列。要解决该问题,可以在config/application.rb
或者config/environments/production.rb
中禁用inline模式并配置传输队列。
例如,可以尝试禁用inline模式并使用Redis作为Active Job后台队列:
# config/application.rb
module YourApp
class Application < Rails::Application
# ...
config.active_job.queue_adapter = :redis
end
end
在使用Redis时,需要确保已经安装了redis
和redis-namespace
gem,或其他相关依赖,然后在config/environments/production.rb
中进行以下配置:
# config/environments/production.rb
config.active_job.queue_adapter = :redis
config.cache_store = :redis_cache_store, { url: "redis://localhost:6379/0", namespace: "cache" }
完成上述操作后,重新运行应用程序并尝试将新任务添加到Active Job队列中,然后查看log/queue.log以确保任务已经被入队并在后台执行。