草庐IT

重试队列

全部标签

ruby-on-rails - 限制 Sidekiq 中每个队列的工作人员数量

我一直在尝试使用sidekiq-limit_fetch来限制每个队列的工作人员数量gem,而Sidekiq似乎在日志中“看到”了强加的限制,但是当我观察工作人员时,这些限制被忽略了。这是日志中Sidekiq看到限制的部分:2013-04-02T05:47:19Z748TID-11ilcwDEBUG:{:queues=>["recommendvariations","recommendvariations","recommendvariations","recommendphenotypes","recommendphenotypes","recommendphenotypes","pr

ruby - 订阅一个队列,收到1条消息,然后取消订阅

我有一个场景,我需要极快地分发和处理作业。我将在队列中快速填充大约45个作业,我可以同时处理大约20个(5台机器,每台机器4个内核)。每项工作花费的时间长短不一,而且垃圾收集使事情变得复杂,因此我需要能够让消费者离线以进行垃圾收集。目前,我的一切都与pop一起工作(每个消费者每5毫秒弹出一次)。这似乎是不可取的,因为它转换为每秒600个pop请求到rabbitmq。如果有一个类似于订阅的pop命令,但只针对一条消息,我会很高兴。(进程会阻塞,等待来自rabbitMQ连接的输入,通过类似于Kernel.select的东西)我试图欺骗AMQPgem做这样的事情,但它不起作用:我似乎无法取消

ruby-on-rails - 将 sidekiq 作业直接移至死队列

是否可以将sidekiq作业从SidekiqWorker实例级别直接移动到死队列(即在执行时)classMyWorkerincludeSidekiq::Workersidekiq_optionsretry:9defperform(name)ifname=='StackOverflow'#---->skip_retry_queue_and_go_to_dead_queueelse#do_stuff!endendend 最佳答案 在执行作业中不是动态的。静态地,如果您设置sidekiq_optionsretry:0,如果作业引发错误,它

ruby-on-rails - 使用 Delayed::Job 管理多个作业队列

我想使用Delayed::Job(或者可能更适合我的问题的作业队列)将作业分派(dispatch)给多个后台守护进程。我有几个执行不同职责的后台守护进程。每个人都对Rails应用程序队列中的不同作业感兴趣。是否可以使用Delayed::Job,或者可能有更适合此任务的不同作业队列? 最佳答案 从那以后http://github.com/collectiveidea/delayed_job已达到v3.0并包括命名队列!非常适合简单的分组队列需求。 关于ruby-on-rails-使用Del

ruby-on-rails - ActiveJob 是否有具有特定优先级的队列?

查看下面的作业,我假设该作业在low_priority队列上运行。classGuestsCleanupJob我同意这一点,但这只是队列的名称对吗?它实际上与优先级无关。例如,如果我创建了一个队列名为:my_queue的作业,它将被视为具有与:low_priority队列相同的优先级。从文档中我无法找到任何表明我可以对排队的作业进行优先排序的信息。我知道delayed_jobs有这个功能,但我在active_job中没有找到它。 最佳答案 优先级取决于实际的QueueAdapter以及此适配器的配置方式。如果您的适配器不支持优先级或未

ruby - 作业中的 Sidekiq 重试计数

有没有办法获取当前作业的重试次数?我希望作业在x次重试后停止,而不是崩溃。我想在perform方法中询问重试次数,这样我就可以在重试次数等于x时简单地返回。defperform(args)returnifretry_count>5...end使用Sidekiq2.12。编辑我(不是OP)有同样的问题,但出于不同的原因。如果正在重试该作业,我想进行额外的健全性检查以确保需要该作业,并在不再期望它成功时停止重试,因为它在排队后发生了外部变化。那么,有没有办法获取当前作业的重试次数呢?当前的答案仅建议您可以绕过需要它或可以从工作之外获得它的方法。 最佳答案

ruby-on-rails - Sidekiq:确保队列中的所有作业都是唯一的

我有一些更新触发器可以将作业推送到Sidekiq队列中。因此在某些情况下,可以有多个作业来处理同一个对象。有几个唯一性插件("Middleware"、UniqueJobs),它们的文档记录不多,但它们似乎更像是防止重复处理的节流器;我想要的是一个阻止重复创建相同作业的节流器。这样,对象将始终以其最新状态进行处理。有这方面的插件或技术吗?更新:我没有时间制作中间件,但我最终得到了一个相关的清理函数来确保队列是唯一的:https://gist.github.com/mahemoff/bf419c568c525f0af903 最佳答案 简

ruby-on-rails - Sidekiq:失败作业的重试更改率?

我有特定类型的作业,我希望重试的频率高于默认Sidekiq间隔设置的频率。这目前可能吗?理想情况下,作业将每5秒重试一次,最多一分钟。不完全确定这是目前插入Sidekiq作业的微不足道的事情。 最佳答案 根据:https://github.com/mperham/sidekiq/wiki/Error-Handling你可以这样做:classWorkerincludeSidekiq::Workersidekiq_retry_indo|count|5endend 关于ruby-on-rail

ruby - 在此 Ruby 示例中如何限制重试和救援?

在Ruby的拙著中,提供了一个使用Rescue和retry的例子,使用以下代码向服务器发送HTTP头:defmake_requestif(@http11)self.send('HTTP/1.1')elseself.send('HTTP/1.0')endrescueProtocolError@http11=falseretryend要限制无限循环以防它无法解决,我必须插入什么代码来将重试限制为5次?会不会是这样的:5.times{retry} 最佳答案 您可以只在循环内编写一个5.times加上一个break,或者抽象该模式以将逻辑与

数据结构笔记NO.1(绪论、线性表、栈队列和矩阵的压缩存储)

第一章、绪论1、数据结构三要素:逻辑结构、存储结构(物理结构)、数据的运算。(1)逻辑结构:是指数据元素之间的逻辑关系,即从逻辑关系上描述数据,它与数据的存储无关,是独立于计算机的。(2)存储结构(物理结构):是指数据在计算机中的表示(又称映像),是用计算机语言实现的逻辑结构,它依赖于计算机语言。顺序存储:把逻辑上相邻的元素存储在物理位置上也相邻的存储单元中,元素之间的关系由存储单元的邻接关系来体现(e.g.数组)。优点:①可以实现随机存取;②每个元素占用最少的存储空间;缺点:只能使用相邻的一整块存储单元,因此可能产生较多的外部碎片;链式存储:不要求逻辑上相邻的元素在物理位置上也相邻,借助指示