我有一个不应超过30秒的sidekiqworker,但几天后我会发现整个worker队列停止执行,因为所有worker都被锁定了。这是我的worker:classMyWorkerincludeSidekiq::WorkerincludeSidekiq::Status::Workersidekiq_optionsqueue::my_queue,retry:5,timeout:4.minutessidekiq_retry_indo|count|5endsidekiq_retries_exhausteddo|msg|store({message:"Gaveup."})enddefperfor
我有一个不应超过30秒的sidekiqworker,但几天后我会发现整个worker队列停止执行,因为所有worker都被锁定了。这是我的worker:classMyWorkerincludeSidekiq::WorkerincludeSidekiq::Status::Workersidekiq_optionsqueue::my_queue,retry:5,timeout:4.minutessidekiq_retry_indo|count|5endsidekiq_retries_exhausteddo|msg|store({message:"Gaveup."})enddefperfor
我必须根据用户的请求运行多个作业。然而,其中只有一个是重要的。所以我有一个MainWorker,在它的perform方法中我调用了不同的其他worker,例如Worker1、Worker2。Worker1和Worker2可以延迟,我需要优先MainWorker。这就是我的perform方法现在的样子classMainWorkerdefperform(user_id)User.find(user_id).main_taskWorker1.perform_async(user_id)Worker2.perform_async(user_id)endend我以后可能会有更多的subworke
我必须根据用户的请求运行多个作业。然而,其中只有一个是重要的。所以我有一个MainWorker,在它的perform方法中我调用了不同的其他worker,例如Worker1、Worker2。Worker1和Worker2可以延迟,我需要优先MainWorker。这就是我的perform方法现在的样子classMainWorkerdefperform(user_id)User.find(user_id).main_taskWorker1.perform_async(user_id)Worker2.perform_async(user_id)endend我以后可能会有更多的subworke
我在我的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
我在我的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
我正在为我的cron作业使用redis服务器和sidekiq但有时sidekiq在后端。我想从我的Controller的操作中重新启动sidekiq,或者在它终止时自动重新启动而不停止我的Rails应用程序服务器。请建议我如何解决这个问题? 最佳答案 您可以通过以下方式检查sidekiq和redis服务器是否正在运行:defredis_connected?!!Sidekiq.redis(&:info)rescuefalseenddefsidekiq_connected?ps=Sidekiq::ProcessSet.newps.siz
我正在为我的cron作业使用redis服务器和sidekiq但有时sidekiq在后端。我想从我的Controller的操作中重新启动sidekiq,或者在它终止时自动重新启动而不停止我的Rails应用程序服务器。请建议我如何解决这个问题? 最佳答案 您可以通过以下方式检查sidekiq和redis服务器是否正在运行:defredis_connected?!!Sidekiq.redis(&:info)rescuefalseenddefsidekiq_connected?ps=Sidekiq::ProcessSet.newps.siz
我有一个Rails应用程序,可以从多个IMAP帐户获取大量电子邮件。我使用sidekiq来处理这些工作。我使用sidetiq来安排作业。我使用redis-semaphore来确保同一用户的重复作业不会相互偶然发现。虽然有2个问题:1:当一个作业命中“ifs.lock”时,redis-semaphore将其暂停,直到之前的所有作业都完成。我需要取消作业而不是排队。2:如果在作业期间出现异常,导致崩溃,sidekiq会将作业放回队列中重试。我需要取消作业而不是排队。将“sidekiq_options:retry=>false”放入代码中似乎没有什么不同。我的代码:classFetchMai
我有一个Rails应用程序,可以从多个IMAP帐户获取大量电子邮件。我使用sidekiq来处理这些工作。我使用sidetiq来安排作业。我使用redis-semaphore来确保同一用户的重复作业不会相互偶然发现。虽然有2个问题:1:当一个作业命中“ifs.lock”时,redis-semaphore将其暂停,直到之前的所有作业都完成。我需要取消作业而不是排队。2:如果在作业期间出现异常,导致崩溃,sidekiq会将作业放回队列中重试。我需要取消作业而不是排队。将“sidekiq_options:retry=>false”放入代码中似乎没有什么不同。我的代码:classFetchMai