加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 使用ActiveJob AsyncAdapter列出排队任务

发布时间:2020-12-17 02:26:08 所属栏目:百科 来源:网络整理
导读:有没有办法可以看到有多少(甚至可能检查每个工作?)队列中还有剩余的工作? 解决方法 经过一些挖掘到 source code这里是我发现的: ActiveJob::QueueAdapters::AsyncAdapter 使用Concurrent Ruby线程池来计划和执行作业. 在配置中初始化适配器时,传递执行程
有没有办法可以看到有多少(甚至可能检查每个工作?)队列中还有剩余的工作?

解决方法

经过一些挖掘到 source code这里是我发现的:

ActiveJob::QueueAdapters::AsyncAdapter使用Concurrent Ruby线程池来计划和执行作业.

在配置中初始化适配器时,传递执行程序选项,而后者恰好是初始化方法的参数
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)

以上做了以下事项:

>得到你的适配器
>得到它的instance_variable @scheduler,指向
> Concurrent :: ThreadPoolExecutor的实例(Scheduler类的实例变量 – @async_executor)
>你可以实际调用上面描述的方法(queue_length,scheduled_task_count和others)

虽然我没有测试它,所以一定要仔细检查拼写错误.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读