有没有办法可以看到有多少人(甚至可以检查每个工作?)队列中还有剩余的工作?
答案 0 :(得分:3)
在进入source code之后,我发现了这一点:
ActiveJob::QueueAdapters::AsyncAdapter
使用Concurrent Ruby线程池来安排和执行作业。
在配置中初始化适配器时,会传递 执行程序选项 ,而后者恰好是initialize
方法的参数
Concurrent::ThreadPoolExecutor
上课。
Concurrent::ThreadPoolExecutor
类的创建实例具有以下方法:
queue_length
- 等待执行的队列中的任务数。scheduled_task_count
- 自构建以来计划在池上执行的任务数。那就是说,我认为沿着这些方向应该为你做点什么:
ActiveJob::Base
.queue_adapter
.instance_variable_get(:@scheduler)
.instance_variable_get(:@async_executor)
.public_send(:queue_length)
以上内容如下:
@scheduler
,指向Concurrent::ThreadPoolExecutor
的实例(Scheduler
类的实例变量 - @async_executor
)queue_length
,scheduled_task_count
和others)虽然我没有测试过,但请务必仔细检查拼写错误。