草庐IT

sidekiq-superworker

全部标签

ruby-on-rails - sidekiq-superworker 的 superjob 完成时调用函数

我在我的Rails4.2应用程序中设置了两个Sidekiqworker,其中第一个执行多个作业,另一个在所有这些作业完成后发送电子邮件。这两个耦合在这个superworker中:Superworker.define(:PrioritySuperworker,:object_class,:object_id,:priority_ids)dobatchpriority_ids::priority_iddoPriorityMailsWorker:object_class,:object_id,:priority_idendSendConfirmationWorker:object_class

ruby-on-rails - 如果 Sidekiq 未处于运行状态,则自动启动它 - Rails

我正在为我的cron作业使用redis服务器和sidekiq但有时sidekiq在后端。我想从我的Controller的操作中重新启动sidekiq,或者在它终止时自动重新启动而不停止我的Rails应用程序服务器。请建议我如何解决这个问题? 最佳答案 您可以通过以下方式检查sidekiq和redis服务器是否正在运行:defredis_connected?!!Sidekiq.redis(&:info)rescuefalseenddefsidekiq_connected?ps=Sidekiq::ProcessSet.newps.siz

ruby-on-rails - 如果 Sidekiq 未处于运行状态,则自动启动它 - Rails

我正在为我的cron作业使用redis服务器和sidekiq但有时sidekiq在后端。我想从我的Controller的操作中重新启动sidekiq,或者在它终止时自动重新启动而不停止我的Rails应用程序服务器。请建议我如何解决这个问题? 最佳答案 您可以通过以下方式检查sidekiq和redis服务器是否正在运行:defredis_connected?!!Sidekiq.redis(&:info)rescuefalseenddefsidekiq_connected?ps=Sidekiq::ProcessSet.newps.siz

ruby - 如何最好地保持作业队列清理重试/重复作业(使用 sidekiq 和 redis-semaphore)

我有一个Rails应用程序,可以从多个IMAP帐户获取大量电子邮件。我使用sidekiq来处理这些工作。我使用sidetiq来安排作业。我使用redis-semaphore来确保同一用户的重复作业不会相互偶然发现。虽然有2个问题:1:当一个作业命中“ifs.lock”时,redis-semaphore将其暂停,直到之前的所有作业都完成。我需要取消作业而不是排队。2:如果在作业期间出现异常,导致崩溃,sidekiq会将作业放回队列中重试。我需要取消作业而不是排队。将“sidekiq_options:retry=>false”放入代码中似乎没有什么不同。我的代码:classFetchMai

ruby - 如何最好地保持作业队列清理重试/重复作业(使用 sidekiq 和 redis-semaphore)

我有一个Rails应用程序,可以从多个IMAP帐户获取大量电子邮件。我使用sidekiq来处理这些工作。我使用sidetiq来安排作业。我使用redis-semaphore来确保同一用户的重复作业不会相互偶然发现。虽然有2个问题:1:当一个作业命中“ifs.lock”时,redis-semaphore将其暂停,直到之前的所有作业都完成。我需要取消作业而不是排队。2:如果在作业期间出现异常,导致崩溃,sidekiq会将作业放回队列中重试。我需要取消作业而不是排队。将“sidekiq_options:retry=>false”放入代码中似乎没有什么不同。我的代码:classFetchMai

ruby-on-rails - Sidekiq 工作卡在队列中

Sidekiq一直在开发模式下完美运行。现在我正尝试在生产中使用它,所有的工作都只是坐在队列中并且从未运行过。谁能指出正确的方向来解决这个问题? 最佳答案 请检查sidekiq进程是否真的在运行:psaux|grepsidekiq如果不是,请尝试先在前台运行sidekiq并检查输出。bundleexecsidekiq-eproduction 关于ruby-on-rails-Sidekiq工作卡在队列中,我们在StackOverflow上找到一个类似的问题: h

ruby-on-rails - Sidekiq 工作卡在队列中

Sidekiq一直在开发模式下完美运行。现在我正尝试在生产中使用它,所有的工作都只是坐在队列中并且从未运行过。谁能指出正确的方向来解决这个问题? 最佳答案 请检查sidekiq进程是否真的在运行:psaux|grepsidekiq如果不是,请尝试先在前台运行sidekiq并检查输出。bundleexecsidekiq-eproduction 关于ruby-on-rails-Sidekiq工作卡在队列中,我们在StackOverflow上找到一个类似的问题: h

ruby-on-rails - Sidekiq 不排队作业

我正在从delayed_jobs切换到sidekiq,我在让sidekiq将作业排入队列时遇到了一些问题。按照sidekiq.org上的示例,我创建了以下类:classHardWorkerincludeSidekiq::Workersidekiq_optionsqueue:"publish_queue"defperform(name,count)puts'Doinghardwork'endend我使用以下命令启动sidekiq:bundleexecsidekiq-edevelopment-Cconfig/sidekiq.yml当我在worker上运行perform_async时,我希望

ruby - 使用 jemalloc 调试 sidekiq worker 内存泄漏

因此,我的Sidekiqworker出现了内存泄漏。我有一个工作服务器,只有一个队列用于这个工作任务,一周内达到大约10GRSS。我尝试只用1个工作线程在本地重现它,瞧-我在一晚上从200M增加到1G,每分钟处理1个任务。自然地,我想知道泄漏了什么,所以我还记录了RSS、heap_live_slots和heap_free_slots。当我绘制结果时,我可以看到稳定的RSS增长同时liveandfreeslots随机波动,但在定义明确且恒定的边界内,而它们的总和保持不变。此时我得出的结论是,泄漏可能不是发生在Ruby代码中,而是发生在某些native扩展中。所以我通过RVM重新安装带有J

ruby-on-rails - Sidekiq + Redistogo(在 Heroku 上)- 达到 ERR 最大客户端数

我从Heroku上的Redis收到错误“ERRmaxnumberofclientsreached”,我不确定这是为什么。我正在为后台工作人员使用Sidekiq,并将其并发设置为5。我是否遗漏了什么导致连接结束?我正在使用免费的Redistogo计划,我意识到它最多只允许10个连接,但我想知道为什么它一开始就超过了10个。 最佳答案 看起来我在Sidekiq文档中找到了答案:Heroku"ERRmaxnumberofclientsreached"You'vehitthemaxnumberofRedisconnectionsallowe