问题标签 [rails-activejob]
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-4 - ActiveJob 的默认队列(内联运行器)是否支持延迟作业的执行?
我可以使用新的 rails 4.2 功能通过 ActiveJob 发送电子邮件
默认队列(内联运行器?)是否支持指定的延迟,例如(伪代码)
或者我需要另一个宝石吗?通过将 ActiveJob 与内联运行器一起使用,这封电子邮件的发送真的是异步的吗?
ruby-on-rails-4.2 - Rails runner 和 ActiveJobs(兼容?)
需要每月运行一次作业。我需要在 cron 中使用 gem 调用它。在这种情况下使用工作或耙子?
我无法在控制台中运行我的工作。
rails runner 'MyJob.perform_later'
我正在使用 Rails 4.2
错误:
.rvm/gems/ruby-2.1.4/gems/railties-4.2.0/lib/rails/commands/runner.rb:62:in <top (required)>': uninitialized constant MyJob (NameError)
from /Users/leonardo/.rvm/gems/ruby-2.1.4/gems/railties-4.2.0/lib/rails/commands/runner.rb:62:in
eval' 来自 /Users/leonardo/.rvm/gems/ruby-2.1.4 /gems/railties-4.2.0/lib/rails/commands/runner.rb:62:in<top (required)>'
from /Users/leonardo/.rvm/gems/ruby-2.1.4/gems/railties-4.2.0/lib/rails/commands/commands_tasks.rb:123:in
来自 /Users/leonardo/.rvm/gems/ruby-2.1.4/gems/railties-4.2.0/lib /rails/commands/commands_tasks.rb:123:in require_command!'
from /Users/leonardo/.rvm/gems/ruby-2.1.4/gems/railties-4.2.0/lib/rails/commands/commands_tasks.rb:90:in
runner' 来自 /Users/leonardo/.rvm/gems/ruby-2.1.4/gems/railties-4.2.0/lib/rails/commands/commands_tasks.rb:39 :in run_command!'
from /Users/leonardo/.rvm/gems/ruby-2.1.4/gems/railties-4.2.0/lib/rails/commands.rb:17:in
'来自 bin/rails:4:in require'
from bin/rails:4:in
'
我的工作内容:
类 MyJob < ActiveJob::Base queue_as :default
结尾
ruby-on-rails - Rails 4.2 ActiveJob 获得作业队列的可见性
使用 SideKiq 作为后端。
有没有办法通过 ActiveJob 访问 ActiveJob 的队列或 SideKiq 的队列?
文档似乎对这个问题保持沉默。
ruby-on-rails - 有效地重新调度 ActiveJob (resque/sidekiq)
我正在Rails 4.2
使用ActiveJob
支持resque/sidekiq
电子邮件调度的应用程序。当用户创建时事通讯活动时,会在特定日期创建并安排新工作。这一切都很好,但是当用户更改交货日期时会发生什么。
在这种情况下,每个作业都可以检查是否应该交付,因此无效的作业将被忽略,只有最后一个会被执行。这可以工作,但如果用户进行 1k 次编辑,会将 1k-1 个无效作业推入队列 - 不好。我认为应该更新现有工作或用新工作替换。据我所知,在Redis
队列中搜索的job_id
速度很慢。
在 Rails 中重新安排 ActiveJobs 的正确方法是什么(使用 resque/sidekiq)?
ruby - 如何使用 ActiveJob 和 Sidekiq 限制失败的作业重试计数器?
我想限制使用作为适配器retries
的作业失败的次数。ActiveJob
Sidekiq
使用 Sidekiq,我可以做到:
Sidekiq 配置不提供全局retry
配置。每个 Worker 负责设置retry
选项。所以我想我必须在 ActiveJob 端实现它才能正确完成。
ruby-on-rails - Rails 4.2 ActiveJob:每个适配器都会导致 PhusionPassenger 错误:在任何源中都找不到 [gem] (Bundler::GemNotFound)
我正在尝试使用 Rails 4.2 的 ActiveJob API 实现异步电子邮件处理。到目前为止,我已经尝试使用两个受支持的适配器:Sucker Punch 和 Delayed Job,但我都遇到了同样的问题。
事情似乎在开发中正常工作。但是,在部署到登台服务器并尝试在我的浏览器中加载网站后,我得到紫色 PhusionPassenger 错误屏幕,并显示以下错误:
以上是我尝试延迟作业时的情况。我的 gem 设置如下所示:
当我尝试 Sucker Punch 时,PhusionPassenger 错误是相同的,除了据说在任何来源中都找不到的 gem 是hitimes
,它是 的依赖项celluloid
,它本身是 .的依赖项sucker_punch
。
我最初认为问题出在 Sucker Punch 上。在我的登台服务器上安装 Hitimes gem 并仍然收到错误后,我决定切换到延迟作业,现在我遇到了几乎相同的问题,所以我猜测还有一些更底层的问题,但我是不知道它可能是什么。我也尝试在登台服务器上更新捆绑器,但没有骰子。
提前感谢您的帮助!
编辑
我在 Delayed Job github 上做了更多的探索,发现了这个命令RAILS_ENV=production bin/delayed_job restart
。当我尝试在我的登台服务器上运行时,我被提醒我的目录RAILS_ENV=staging bin/delayed_job restart
中没有延迟作业 binstub 。bin/
回顾我的本地开发环境,我确实看到它bin/delayed_job
存在并且可以bin/delayed_job restart
成功运行。暂存中缺少 binstub 是否会导致问题?如果是这样,为什么没有正确创建 binstub?我很确定我的 capistrano 部署过程使用bundle exec bundle install --binstubs
.
编辑 2
通过下面概述的一些步骤,我能够让延迟作业出现在我的 bin/staging 中。我还尝试根据延迟作业 GitHub 上的建议添加“守护进程”gem,但仍然遇到相同的错误,现在是关于“守护进程”而不是“延迟作业”本身。
ruby-on-rails - 测试 Sidekiq/ActiveJob - ActiveJob 中的作业而不是 Sidekiq
我猴子修补了我的用户类(由设计支持)以使用 ActiveJob,如下所示:
我尝试使用以下测试对此进行测试:
log/test.log 看起来像这样:
调试器中的 enqueued_jobs 如下所示:
bin/rails c --环境测试
我的 Procfile 看起来像这样:
有人有想法么?
ruby-on-rails - 在 ActiveJob 中排队多个作业
我想知道是否有办法在 ActiveJob 中将多个工作排入队列?类似于 sidekiq push_bulk。
我需要将数千个工作排入队列,并且需要花费太多时间来逐一完成。
ruby - Rails 异步作业如何让控制器知道它已完成?
我正在使用最新版本的 rails 和 ruby。通过一个表单,我导入了一个 CSV,然后触发了一个异步作业(我为此使用了 gem https://github.com/brandonhilkert/sucker_punch)来读取文件并处理数据。
总而言之,一切正常,但是:
我的问题是,我如何让控制器知道后台工作何时完成?我想通过快速通知重定向,但显然我不应该从模型中这样做......我可以在这里做什么?
这是我的sucker_punch 工作:
这是我的控制器操作:
ruby-on-rails - ActiveJob (resque) 使用的数据应该被持久化还是放入 ruby 对象并通过对象 id 传递?
我正在使用 Twilio在 Rails 4.2 应用程序中发送/接收文本。我是批量发送,一次大约 1000 个,偶尔接收。
目前,当我收到一条文本时,我将其保存到数据库(to、from、body),然后将该记录传递给 ActiveJob 工作人员以供稍后处理。为了发送消息,我目前将 Twilio 参数保存到另一个数据库,并将该记录传递给另一个 ActiveJob 工作人员。因为我经常分批做,所以我有两个工人。第一个传出消息工作者发送一条消息。第二个查询数据库并找到应该接收消息的所有用户,为每个应该发送的消息创建一个数据库记录,然后将该记录传递给第一个传出消息工作者。所以第二个基本上只是为第一个处理创建了一堆工作。
现在,我让工作人员在完成处理(传入和传出)后销毁记录。我担心在服务器、redis 或 resque 出现故障时不会持久保存东西,但我不知道这是否真的是一个好的设计模式。有人建议我只使用香草红宝石对象并将其 id 传递给工作人员,但我不确定这如何影响数据可靠性。那么创建所有这些数据库是不是太过分了,我应该只创建香草红宝石对象并将这些对象的 ID 传递给工作人员吗?
任何和所有的见解都值得赞赏,
德鲁