问题标签 [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 - 如何在不加载整个 Rails 环境的情况下将作业排入 ActiveJob?
我想从不同的地方将 Job 排入 ActiveJob 队列。有时来自命令行,有时来自 cron 作业。但是每次都加载整个环境,只是为了在redis中创建一个入口,感觉效率不是很高。
是否有其他解决方案可以在不加载整个 Rails-Application 的情况下快速将作业添加到 ActiveJob。
我知道,这应该是春天的工作,但是(我不知道为什么)它仍然需要大约 5 秒:
哦,如果这很重要:我使用 sidekiq。
sidekiq - 如何清除 ActiveJob 队列
我有工作反复尝试和失败......我如何清除它们?我现在将重试次数设置为 0,但这对已经排队的作业没有帮助。
redis - 如何在 Rails 的 activejob (adapter=resque) 中执行操作时获取作业 ID
我可以从 before_enqueue 方法中获取 JOB ID,例如
但我也想在执行方法中得到它请帮助!
ruby-on-rails - ActiveJob:如何在没有完整的作业类的情况下进行简单的操作?
有了delayed_job
,我可以做这样的简单操作:
@foo.delay.increment!(:myfield)
是否可以对 Rails 的新 ActiveJob 做同样的事情?(无需创建一大堆执行这些小操作的作业类)
ruby-on-rails - 使用 ActiveJob 时是否仍只传递对象 ID?
在 ActiveJob 中执行以下操作有哪些优缺点:
选项 A:
选项 B:
ruby - 带 Resque 适配器的 ActiveJob(添加延迟/超时功能)
我计划使用循环传递多个活动作业。但是我需要在每个数据循环中都有一个延迟/超时功能。我的代码是这样的:
请帮忙谢谢!
ruby-on-rails - 如何使用delayed_jobs在rails中执行异步任务?
任务:以方式删除一个项目Async
[HomeWork]
我已经在我的 rails 应用程序中配置Active jobs
了delayed_jobs
,但我仍然对Async
在 rails 项目中执行任务感到困惑。
让我们举个例子:我有一些项目要从数据库中删除,但我想以某种Async
方式进行。我还在博客中阅读了有关perform_later
或perform_now
方法的信息。delayed_job
这是我的代码,它工作正常:
控制器类
职位类别
根据delayed_jobs的官方文档,我可以handle_asynchronously
在方法的末尾添加以运行async
方式。在这种情况下我该如何实施?
我的问题:
- 当我查看
destroy
方法时,它不会以Async
某种方式删除元素。destroy
但是,方法中编写的每个步骤都在Synchronous
. 我错了吗? - 如果不是,那么我该如何实现以异步方式
destroy
删除的方法?post
- 后台任务和cron作业是一回事吗?
编辑-1
在 A Fader Darkly 给出建议后,我将其更改perform_now
为perform_later
对进程非常有效,Async
但它没有从表中删除条目(代码很好,因为它在我用户时有效perform_now
)。
此外,当我通过以下命令手动运行作业时,一切正常:
有什么方法可以在获得一些新数据delay_job
后立即执行任务?queue
ruby-on-rails - 基于 GlobalID 的 ActiveRecord 对象的行为是否存在问题?
我完全有可能做错了什么,但是!
这是故事。我有一个标准的初学者级别的 RoR 设置 (4.2) 和 ActiveJob 作业。
我的一项工作调用了已传入的记录上的一个方法,该方法旨在修改该记录。到现在还挺正常的。它看起来像这样:
然后update_myself!
方法如下所示:
现在这是个谜——当我运行测试并检查时,fixture_instance.thisis_a_column
测试newvalue
通过了。当我启动我的应用程序并查看数据库中发生的情况时,它没有按预期更新。
但如果我说self.thisis_a_column = newvalue
,那么它在任何地方都能正常工作。
我确定我重新加载了我的夹具......我是这样做的:fixture_instance = RecordinDb.find(fixture_inst.id)
就好像 ActiveRecord 实例中的绑定会根据实例化的时间发生变化。在我的测试中,看起来符号被视为可能发送的消息,self
但在工作中,它们被视为本地名称。为什么?
ruby-on-rails - Rails 4.2:重定向后的活动作业
这是我第一次使用ActiveJob,所以我还在纠结细节。我有一个表单,当通过Execute
按钮保存时,它会执行一些需要很长时间的 API 调用。
我希望页面无需长时间等待即可重定向到索引。这是我的控制器的创建操作..
campaign_controller.rb
...而我的工作还处于婴儿期
folder_push_job.rb
完成这项工作的最佳方法是什么?
更新
我发现的一个问题是我没有 Job 的后端,所以我安装了delayed_job
gem。
配置/应用程序.rb
现在它重定向并且根本不运行作业。
非常感谢任何帮助。
ruby-on-rails - 如何在生产中启动/停止 ActiveJob 工作人员
我在开发中使用 ActiveJob(延迟作业作为排队后端,但我认为这无关紧要)来执行诸如异步发送电子邮件或记录一些事件之类的事情。
在开发中,在终端中,我执行rake jobs:work
启动工作进程,我CTRL+C
用来杀死它,我rake jobs:clear
用来清空队列。
我如何在生产中执行此操作(DigitalOcean 上的一个小滴),即使我没有在服务器上登录,我如何知道我的工作人员正在运行?我通常使用mina部署,我可以在我的脚本中编写它deploy.rb
吗?