# 此方法会重新设置redis的key,将会会进入到失败队列
# “cancelled-”是你的sidekiq中redis的命令空间 例如 sidekiq:status:  => 例如 Sidekiq.redis {|c| c.set("sidekiq:status:#{jid}", "123456") }
Sidekiq.redis {|c| c.set("cancelled-#{jid}", "自定义key") }
 

理性方法:将方法最好定义在MyWorker下

def cancel! job_id
  # 过期时间
  cancel_second = 1
  # 立即执行 设置过期时间 终止执行 将进入重试
  Sidekiq.redis {|c| c.setex("sidekiq:status:#{job_id}", cancel_second, 1) }

此方法会将执行中的sidekiq放入重试中。
1.如果是worker任务的话,你只需要 在worker添加配置

sidekiq_options retry: 1

2.如果是 ActiveJob引用sidekiq的话,你需要在执行的时候放入以下部分

ApplicationJob.set(retry: false).perform_later

set(retry: boolean) true 是重试,false不重试

ruby on rails 使用gem sidekiq,执行中的任务 在sidekiq的任务中很难取消,解决此方法由以下方法:暴力方法:# 此方法会重新设置redis的key,将会会进入到失败队列# “cancelled-”是你的sidekiq中redis的命令空间 例如 sidekiq:status: => 例如 Sidekiq.redis {|c| c.set("sidekiq:status:#{jid}", "123456") }Sidekiq.redis {|c| c.set("
Lambdakiq 使用 gem在AWS Lambda运行Rails时, 替代产品。 Lambdakiq允许您最大程度地利用AWS的托管基础​​架构。 管理吊舱和漫长的轮询过程的日子已经一去不复返了。 相反,AWS直接将消息传递到Rails的工作职能部门,并根据需要对其进行放大和缩小。 可观察性是使用AWS CloudWatch指标,仪表板和警报内置的。 了解有关更多信息或立即开始。 独特的Web和Jobs Lambda功能。 AWS完全托管的轮询。 事件驱动。 最多12次重试。 每个作业都是可配置的。 镜像Sidekiq重试时间。 最后重试时间为11小时30分钟。 支持ActiveJob的等待/延迟。 最多15分钟。 无效消息最多可存储14天。 该gem假定您的Rails应用程序在AWS Lambda上,最好与我们的 gem一起使用。 它可能使用了
这将对股票Sidekiq重试间件进行子分类,以便您可以 重试已禁用重试的作业(重试:0或重试:false) 止(不要重试)默认情况下将重试的作业 但仍然让该作业引发异常,以便您可以观察到该作业失败(通过检查日志,使用等)。 不要用它代替您的工作成为幂等! 将此行添加到您的应用程序的Gemfile: gem 'sidekiq-retries' class NoRetryJob include Sidekiq::Worker sidekiq_options retry: false # or retry: 0 def perform # retry this job when it otherwise would not raise Sidekiq::Retries::Retry.new(RuntimeError
ActiveJob :: Retriable 自动重试失败的ActiveJob,并采用指数补偿。 该gem旨在模仿Sidekiq的RetryJobs间件的大多数功能,但可在ActiveJob层上运行。 要安装gem,请将以下内容添加到您的Gemfile: gem "activejob-retriable" 如果您使用的是Rails 5,请使用Github上的分支母版获得支持。 一旦Rails 5的第一个稳定版本发布,我们将推出5.0版本的gem。 gem "activejob-retriable" , github : "SimplyBuilt/activejob-retr
要安装asynq库和asynqmon命令行工具,请运行以下命令: go get -u github.com/hibiken/asynq go get -u github.com/hibiken/asynq/tools/asynqmon
Consumer:sidekiq 进程 Sidekiq会加载Rails的代码,所以可以使用 Rails app 的各种类、各种方法等等更新Rails代码后,Sidekiq 进程需要重新启动,以便reload代码。Sidekiq 是多线程,默认25个 Publisher:Rails Sidekiq通过Redis Gem(一个Redis client)和Redis通讯。 job :某一个任务的一次执行; worker:Sidekiq是使用 Celluoid 来完成其多线程的控制的, 而 Celluoid 是 Ruby 的多线程模式 Actor 模式的实现,worker按照任务列表执行任务; queue:队列用于区分任务并且让任务排队, Sidekiq 将每一类的任务使用一个 queue 来...
ActiveJob :: Retry 这是活跃开发的Alpha库,因此API可能会更改。 ActiveJob的自动重试功能。 只需在您的工作类别include ActiveJob::Retry.new(strategy: :something, **options) : class ProcessWebhook < ActiveJob :: Base queue_as :webhooks # Constant delay between attempts: include ActiveJob :: Retry . new ( strategy : :constant ,
SidekiqUniqueJobs 该gem为sidekiq队列添加了唯一的约束。 通过获取队列名称,工作器类和作业的参数的哈希值的锁来实现唯一性。 默认情况下,只能获取给定哈希的一个锁。 当无法获取锁时发生的情况由所选的on_conflict策略控制。 这是master分支的文档。 您可以通过导航到每个版本的标签来找到其文档。 这是一些旧版本的链接 将此行添加到您的应用程序的Gemfile: gem 'sidekiq-unique-jobs' 然后执行: bundle 添加间件 在v7之前,间件是自动配置的。 由于有些人报告了其他宝石的问题(请参阅 ),因此决定完全控制用户。 注意如果要使用收割机,则还需要配置服务器间件。 Sidekiq . configure_server do | config | config . redis = { url : ENV [ "REDIS_URL" ] , driver : :hiredis } config . client_middleware do | chain | chain
多个后台作业库(如 Resque、Sidekiq 和 DelayedJob)的简单界面。 在这个每隔一段时间发布一个新的异步作业处理库的狂野世界,Qe 试图保持一个与最著名的库一起工作的统一接口: 要设置适配器,只需根据您的适配器加载文件: require "qe/resque" require "qe/qu" require "qe/delayed_job" require "qe/beanstalk" 您还需要 require 将要使用的库。 如果您将 Rails 与 Bundler 一起使用,您可以简单地要求正确的文件和依赖项。 source :rubygems gem "rails" , "3.2.8" gem "sidekiq" gem "qe" , :require => "qe/sidekiq" gem "resque" gem "qe" ,
消息处理的扩展,以跟踪您的作业。 受到启发,主要是使用Sidekiq间件复制其功能。 与ActiveJob完全兼容。 支持最新版本的Sidekiq并一直支持3.x。 将此行添加到应用程序的Gemfile: gem 'sidekiq-status' 然后执行: $ bundle 或将其自己安装为: gem install sidekiq-status (可选)添加 (可选)启用对支持 要使用,请将sidekiq-status添加到间件链。 有关更多信息,请参见Sidekiq Wiki上的。 require 'sidekiq' require 'sidekiq-status' Sidekiq . configure_client do | config | # accepts :expiration 本篇介绍sidekiq基于redis队列的后端的异步任务处理,当然还有定时任务,延时处理等功能。 https://github.com/mperham/sidekiq/wiki http://mperham.github.com/sidekiq/ sidekiq的宣传语: What if 1 Sidekiq process could do the work of 20 Resqu... SidekiqSidekiq WikiSidekiq on GitHubCelluloidEpisode 271: ResqueEpisode 365: Thread-Safety (pro) terminal brew install redis redis-server /usr/local/etc/redis.conf bundle exec sidekiq
参考:https://github.com/mperham/sidekiq/wiki/Getting-Started https://wdxtub.com/2016/07/06/sidekiq-guide/ 使用sidekiq之前需要安装redis:参考redis安装 gem 'sidekiq' rails g sidekiq:worker Hard # will create a...
ActiveJob 是 Rails 4.2 新加入的功能。这个东西在beta阶段rubyChina就已经有很多高手关注了,无奈自己的项目使用的是4.1.5,升级到4.2 的时候其他gem又有很多依赖有问题,所以没在第一时间使用。今天补个课。 ActiveJob 是Rails自己开发运行后台程序的模块,常用于执行运行时间可能很长的工作(比如发送注册邮件