问题标签 [delayed-job]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ruby-on-rails - rspec 中未处理延迟作业
我正在尝试为自定义延迟作业 (GetPage::GetPageJob) 运行 rspecs,但我遇到了问题。
当我运行它们时,这些作业被很好地排入队列(也就是说,很好地插入到了delayed_jobs 表中),但它们没有被作业工作者处理。实际上,在第一个终端中启动“rake jobs:work RAILS_ENV=test”之后,在第二个终端中运行规范后,我在第一个终端中看不到作业工作者的任何输出。
另一方面,如果我通过“脚本/控制台测试”将它们排入队列,这些作业就会得到很好的处理。所以我有点困惑。
使用规范和脚本/控制台,我用来排队我的工作的行是:
任何想法 ?
ruby-on-rails - Heroku 上的延迟作业
我有一个托管在Heroku上的Rails应用程序,需要每周导入一次数据。该任务由管理员执行,运行大约需要1-2 分钟(计算时间)。在 Heroku 上,需要超过30 秒的作业会超时。Heroku 建议使用作业队列——但是,每月为 8 分钟的计算时间支付 36.00 美元(一名工人的价格)似乎并不合适。几个问题:
- 是否可以仅在使用延迟作业时才为其付费(即仅在管理员上传数据导入时才启动延迟作业服务)。
- 是否需要延迟工作?我不确定超时是否只是显示给客户端,或者是否取消了实际工作。该文档确实列出了“不采取任何行动”作为选项,但我不确定这意味着什么。
谢谢!
ruby-on-rails - 有没有类似DelayedJob,但不使用数据库
我正在使用 Rails 构建一个网站,它将在后台执行某些操作。我不想使用 DelayedJob,因为它需要一个数据库。
我不想做的很简单:从另一个站点获取一些数据,将响应保存在内存中,并保留 10 分钟。
有什么工具可以做到这一点吗?
ruby-on-rails - 关于“delayed_job”的一些基本问题
我现在正在尝试delayed_job
,并且有一些问题。
从http://github.com/collectiveidea/delayed_job页面,我可以看到一些信息:
工作人员可以在任何计算机上运行,只要他们可以访问数据库并且他们的时钟是同步的。请记住,每个工作人员至少每 5 秒检查一次数据库。
当我调用
rake jobs:work
一次时,它会创建一个工人,对吗?当工作人员检查数据库时,它将每次读取所有新的和失败的任务并运行它们?
它说工作人员将每 5 秒检查一次数据库,我可以让它 2 秒吗?
当我创建一个worker(
rake jobs:work
)时,数据库中已经有10个任务,每个任务需要3s。DelayedJob 会创建多少个进程?总共需要多少秒?
ruby-on-rails - 如何在后台运行一些任务并将结果放入全局内存散列?
我正在使用 Rails 构建一个网站,可以让用户检查是否已注册某些域。逻辑设计如下:
- 页面上有一个文本字段让用户输入一些域名
- 当用户单击
check
按钮时,输入将被发布到服务器 - 服务器获取输入,创建一个后台任务(将在另一个进程中执行),并立即向用户返回一些文本,例如“正在检查...”
- 后台任务会将域名发布到另一个站点,获取响应,解析它以获取有用的信息,然后将数据放入一个全局内存哈希(该任务需要 3 秒)
- 包含“checking now...”的页面有一个javascript函数,将请求服务器获取检查结果。它每 2 秒运行一次,直到得到结果。
- 服务器端有一个动作来处理“检查状态请求”。它检查Globle 内存哈希,找到结果,返回它,否则返回“[]”
(我使用的是 Rails 2.3.8,delayed_job)
我是一名 Java 开发人员,这就是我将在 Java 中做的事情。但是我发现很难为“延迟的工作人员”和“rails”保存一个“全局内存哈希”,因为它们处于不同的进程中。
我的设计在rails中是不可能的吗?我必须将检查结果存储到数据库或类似“memcached”的东西吗?
而且,这些后台任务可以并行运行吗?
ruby-on-rails - delay_job 处理作业后的回调
我需要在delayed_job
处理一个任务后更新一个模型,例如:
foo.delay.something
完成后something
,我需要更新 foo 对象,实现此目的的最佳方法是什么?我正在考虑在Delayed::Backend::ActiveRecord::Job
类上编写回调,但应该有一些更清洁和更好的方法来做到这一点。
ruby-on-rails - 后台作业与 after_save 回调
我有一个名为 Vote 的模型,该模型非常频繁地更改(人们对事物进行投票)。我在投票保存后进行其他分析,例如插值选民是男性/女性、年龄等。这会导致更新同一模型中的计数器(成人投票、女性投票等)。
我想知道保存处理后执行此操作的最佳方法是什么,这应该是后台作业(我使用延迟作业插件)还是最好将其保留为 after_save 回调?从性能的角度来看,哪个更好?
我真的不需要向用户显示第二个最新数据(即使 after_save 回调也无法完成)。
谢谢
ruby-on-rails - 在不启动 Rails 的情况下在 Delajed Jobs 中重复执行任务?
如果我需要在延迟的工作中创建重复任务,什么是干净的解决方案?我有一个导入任务,我想每 5 分钟运行一次,但我不想启动 rails/rake 来告诉它创建一个可以获取的延迟作业。如果 Rails 已经在系统上运行,也许我可以创建一个 HTTP 请求,让 Rails 应用程序触发 DJ?我可以将该 cron 任务放在一个每 5 分钟运行一次的 ruby 脚本中,向服务器发出请求,但不会启动 rails。你怎么看?
jruby - jruby 有没有像 gem 一样的延迟工作?
我正在尝试将 rails 应用程序转换为 jruby on rails。目前,jruby script/delayed_job run
给出:
jruby有没有像delayed_job这样的宝石?
ruby-on-rails - 在 Delayed_job 中手动重试作业
Delayed::Job 的自动重试功能很棒,但是我现在想手动重试一个作业。有没有一种方法我可以调用工作本身,比如......
或运行,或什么的。我尝试了一些东西,并梳理了文档,但无法弄清楚如何执行手动重试作业。