Rails 反跳延迟作业后台任务?删除重复项

2024-01-04

去抖是推迟函数/作业执行直到经过一定时间之后的常用方法。

用例:来自多个用户的活跃聊天对话,他们不应该收到每条键入消息的电子邮件通知。但很可能在几分钟的静默后,如果消息未读,用户应该会看到一条通知。

延迟作业

没有解决方案,有相关问题:https://github.com/collectiveidea/delayed_job/issues/72 https://github.com/collectiveidea/delayed_job/issues/72

Sidekiq

https://github.com/hummingbird-me/sidekiq-debounce https://github.com/hummingbird-me/sidekiq-debounce


做自己也没有那么糟糕。

class AdminJob
  def self.debounce(job, args={})
    handler = YAML.dump(job)
    count = Delayed::Job.where(handler: handler).where('locked_at IS NULL').delete_all
    Rails.logger.info("deleted: #{count} jobs")
    Delayed::Job.enqueue(job, args)
  end
end

而不是写:

Delayed::Job.enqueue(YourJobName.new(account_id), {run_at: 10.minutes.from_now})

你现在写:

AdminJob.debounce(YourJobName.new(account_id), {run_at: 10.minutes.from_now})

延迟作业将您的作业参数序列化为YAML然后将其保存到数据库中handler。所以如果你打电话AdminJob.debounce(...)连续10次,每次都会删除之前的。

确保给自己时间(5分钟等)让用户继续采取行动。如果您在 1 秒后运行作业,它们很可能会继续采取操作并再次触发。

是的,三年后我正在回答我自己的问题......

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Rails 反跳延迟作业后台任务?删除重复项 的相关文章

  • 如何设计销毁会话并从控制器注销?

    设计销毁会话并从控制器注销 if something is not kosher 1 log this event 2 send notice redirect to destroy user session path and return
  • Rails Heroku 服务器回形针 Amazon S3 - AWS::S3::Errors::RequestTimeout

    当我使用附加图像保存 konkurrencer 模型时 我在 Heroku 上收到错误 但在本地服务器上却没有 我的 Heroku 日志 36m2012 04 01T17 45 37 00 00 app web 1 0m Started P
  • Sidekiq 不处理队列

    有哪些可能的原因可以Sidekiq https github com mperham sidekiq阻止处理队列中的作业 队列已满 日志文件sidekiq log表示根本没有活动 因此队列已满但日志为空 并且 Sidekiq 似乎没有处理项
  • 过滤器链因 [:login_required] returned_or_redirected 而停止

    希望我能很好地解释这一点 但如果需要更多信息 请告诉我 我正在构建一个表单 用户可以在其中创建 事件 此次事件有如下关系 属于 客户 客户有很多事件 belongs to 用户 用户有很多事件 has one incident status
  • 设计闪现消息不显示

    Devise 在我的应用程序中完美运行 除了来自 devise en yml 的闪存消息未显示在视图中 我究竟做错了什么 下面是我的注册页面视图 我都尝试过 alert and notice但不工作 先感谢您 h2 Sign up h2 p
  • Rails 3 ActiveModel:无法直接包含 ActiveModel::Model

    在我的 Rails 3 2 11 和 开发 环境中 当我尝试拥有活动模型时 class DisponibilityApi include ActiveModel Model attr accessor start time end time
  • 在虾中使用列表

    我使用 prawn 创建 pdf 文件 其中包含大量表格格式的数据和一些列表 列表的问题在于 我只是使用文本作为列表 因为没有与 ul gt li 列表等效的语义 就像我在 webfrointend 中使用它们一样 所以这些清单是不合理的
  • Rails 可安装引擎的 prepend_view_path

    一方面 我有一个可安装的发动机 比如说前轮 前面包含我的资产和几页 它与 MainApp 隔离 我不想让它触及主应用程序 另一方面 我希望我的 MainApp 使用布局和部分前端 所以我这样设置布局 class ApplicationCon
  • 如何将 image_tag 与 bootstrap class: "img-responsive" 一起使用?第11章

    我问这个问题的原因是为了解决一个非常烦人的语法错误 我正在使用第 11 章 这样我就可以在我的新网站上使用图像构建一个博客部分 除了我尝试向此行添加 class img responsive 之外 一切都正常 我只是无法弄清楚添加类的正确语
  • Friendly_id 和真实ID

    有什么办法可以得到真正的id使用Friendly id 修改的模型中的列 出于性能原因 我不想对其进行另一个数据库查询 广义上来说Friendly id修改to param and find方法 接下来应该可以工作 affiche Affi
  • heroku 上的 Sidekiq - 错误 R14(超出内存配额)

    我有一个在 heroku 上运行的 sidekiq 进程 在运行一段时间后崩溃并显示以下错误消息 错误 R14 超出内存配额 谁能给我任何关于如何开始诊断正在发生的事情的指示 没有任何明显的原因可能导致这种情况 尝试降低并发数 Sideki
  • RegistrationsController#create 中的 ActionController::InvalidAuthenticityToken

    您好 我正在使用 Devise 进行用户身份验证 突然我的新用户注册无法正常工作 这是我收到的错误 ActionController InvalidAuthenticityToken Rails root home example app
  • 为什么 npm install 失败并出现与 node-sass 相关的错误?

    我正在使用我继承的 Rails 应用程序 我正在尝试运行npm install命令但我不断收到errors以下 我尝试跑步npm rebuild node sass正如输出中所建议的 但它没有帮助 我遇到这个问题乌班图16也OS X gt
  • Rails 3 > 在 rake 任务中渲染视图

    我遇到了一项需要为 Mailchimp 准备新闻通讯的 rake 任务 使用 google 搜索到的 Rails 2 x 内容 我现在有了以下代码 desc Sends newsletter to Mailchimp list task s
  • 是否仍然可以在 Rails 4 中使用测试单元?

    从 Rails 3 2 升级到 Rails 4 后 我的应用程序可以运行 但我用测试单元编写的测试是一场灾难 据传 Minitest 与测试单元 兼容 然而 如果我尝试使用 现在捆绑的 Minitest 就会发现有很多差异 从断言 语句名称
  • 在 Rails 6 上添加外部 js 文件

    我在 app gt javascript gt packs 下创建了一个名为 custom 的文件夹 并放置以下外部 js metisMenu min js startmin js 然后在 app gt javascript gt pack
  • 导轨、定制探测器

    所以我希望能够使用来获取一个对象find by id or name 我觉得我看到了另一个这样的问题 但很难找到任何资源来制作我自己的查找器 您可以通过向模型添加类方法来做到这一点 例如 class Model lt ActiveRecor
  • 加载新的 Turbo Frame 时如何执行 JavaScript

    我在 Rails 应用程序中使用 Turbo Frames 并且在每个页面上都有
  • 安装适用于 Windows 7 的 Ruby on Rails(最新)

    我是一名设计师 而不是一名编码员 并且在首次安装时遇到了问题 我下载了 Rails 1 8 6 和 Instant Rails 我打开控制台并尝试更新 gem 那里没有任何作用 我想我会删除所有内容并重新开始 因为我确信我现在破坏了某些东西
  • 如何使用 Rspec 来测试使用 Paperclip 的模型是否正在验证上传文件的大小?

    该模型 class Attachment lt ActiveRecord Base belongs to narrative attr accessible description user id narrative id has atta

随机推荐

  • jsonpath:JSON 路径没有值:$.id,异常:路径“id”正在应用于数组。数组不能有属性

    我尝试使用 jsonPath 读取 json 的内容 但出现错误 这里是junit测试方法 mockMvc perform get path andExpect status isOk andExpect jsonPath id is 1
  • 如何从网站执行vbscript

    我有一个 VBScript 文件 当它在计算机上时 它工作正常 我想将它放在一个 php 站点上 以便通过单击按钮来执行它 但我还没有成功 它实际上获取计算机信息 希望它能在用户的机器上运行 任何想法将不胜感激 如果或者如果有人知道如何用
  • 在 NetBeans 8.0 中调试需要 sudo 运行的 C++ 程序

    我知道这个问题在不同的网站上被问过很多次 但我找不到任何如何解决我的问题的建议 我正在 NetBeans 8 0 中使用 GCC 4 8 1 需要 直观地 调试一个访问原始设备的程序 因此我需要通过 sudo 运行它 我的项目属性设置是 运
  • 如果异步引发,事件会起作用吗?

    我有一个类的以下骨架 正如您在 TODO 注释中所看到的 我将在这里实现 AsyncEnumerator 构造 此方法将获取请求并将数据传递给另一个方法进行处理 根据流程 我想调用事件 SendMilestoneReached 或 Send
  • 哪个目录是 `brew cask install` 使用的真实位置?

    哪个目录是真实位置brew cask install uses 我想找到应用程序的真实位置 而不是符号链接 Application 您可以在可用的应用程序中找到每个应用程序的自定义命令Casks https github com caskr
  • 嵌入允许添加和删除的 Symfony2 表单集合

    在 Symfony2 中 如果我嵌入表单集合 http symfony com doc current cookbook form form collections html指向Doctrine中的多对一关系并允许添加和删除 如果我从头删除
  • 将系统属性从 Gradle 传递到 Spring Boot

    我想将某些安全敏感属性传递到我的 Spring Boot 应用程序中 我在开发过程中通过命令行和 或外部设置的系统属性通过 Gradle 启动该应用程序 我无法将这些写入 build gradle 脚本或属性文件之类的内容 因为它们将被提交
  • 快速写出png

    Summary 我想尽快编写一个 png 文件 而不用担心压缩 也就是说 我不太关心文件大小 但我确实关心写入尽可能快地发生 动机 我正在客户端使用 OpenLayers 并在后端使用 python C 制作一个基于 Web 的地图应用程序
  • 运算符重载?

    我让自己成为了一个 RSS 阅读器 它可以让我了解最新情况并通知我新节目 或者至少这就是背后的想法 我创建了一个结构体 SeasonEpisode 其中包含两个整数 季节 剧集 和一个覆盖 ToString 函数 我将最新观看的内容存储在本
  • 从文本文件中删除行的有效方法

    我需要从文本文件中删除特定行 做到这一点最有效的方法是什么 文件可能很大 超过百万条记录 更新 下面是我当前正在使用的代码 但我不确定它是否好 internal void DeleteMarkedEntries string tempPat
  • 无法在 Django 中创建自定义 __str__ 调用父级的 __str__

    尽管我知道如何制作它 并且已经搜索了比较我的代码的示例 但我不明白为什么我不能调用具有其自身的模型 str 在其父级内部调用 str 我得到一个RuntimeError maximum recursion depth exceeded in
  • 如何将列值转换为列?

    我已经浏览了 Stackoverflow 在线图书和 google 上的大量 SQL Pivot 示例 但我仍然无法弄清楚如何执行 我称之为 简单的 Pivot 操作 实施例1 https stackoverflow com questio
  • 如何轻松检查 .NET 中的文件访问是否被拒绝?

    基本上 我想在实际尝试打开文件之前检查我是否有权打开该文件 除非必须 否则我不想使用 try catch 进行此检查 是否有我可以事先检查的文件访问属性 过去我已经做过无数次这样的事了 但几乎每次我的尝试都是错误的 文件权限 甚至文件存在
  • 重复播放后媒体播放器错误 (-19,0)

    我有一款游戏 当关卡完成时会播放声音 一开始一切正常 但在重复 10 或 20 次级别后 logcat 突然报告 MediaPlayer 错误 19 0 和 或 MediaPlayer 在状态 0 下启动 并且不再发出声音 我最初有 mp3
  • 如何使用 PIL 优化调色板图像大小?

    我的目标是在黑色图像上绘制一些多边形 以使所得图像的总尺寸尽可能小 所以我在维基上读了一篇关于索引颜色的文章 link https en wikipedia org wiki Indexed color 并且这对我来说似乎是一个不错的选择
  • MSSQL/dblib 的 PDO 日期时间格式

    MSSQL 2005 数据库具有排序规则 German Phonebook BIN 但这并不重要 与数据库的连接是通过 PDO 和 FreeTDS 完成的 在 Debian Squeeze 下使用 PHP 当我尝试从表中选择日期时间值时 我
  • 如何注释掉 XML 元素(使用 minidom DOM 实现)

    我想注释掉 xml 文件中的特定 XML 元素 我可以删除该元素 但我更愿意将其注释掉 以备以后需要 我目前使用的删除元素的代码如下所示 from xml dom import minidom doc minidom parse myXml
  • Django 编辑用户配置文件

    我正在尝试在前面创建一个 编辑个人资料 表单 发生的情况是我的表单 我不是 100 确定 尝试创建一个用户 而不是查找当前用户并更新他的个人资料 所以我认为这就是问题所在 在这里检查了很多问题 但没有一个足够清楚 我尝试编辑的字段是电子邮件
  • 此处不允许使用列 Oracle SQL 处理多个列

    我正在尝试将记录插入表中 但当我插入此记录时 我的 项目评级列 下例中的 PG 上出现 此处不允许列 错误 INSERT INTO ITEM VALUES item s1 NEXTVAL 786936161878 SELECT common
  • Rails 反跳延迟作业后台任务?删除重复项

    去抖是推迟函数 作业执行直到经过一定时间之后的常用方法 用例 来自多个用户的活跃聊天对话 他们不应该收到每条键入消息的电子邮件通知 但很可能在几分钟的静默后 如果消息未读 用户应该会看到一条通知 延迟作业 没有解决方案 有相关问题 http