问题标签 [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.

0 投票
1 回答
3330 浏览

ruby-on-rails - 在后台以较低的 CPU 优先级运行任务

我的 CMS 中有一个功能,允许用户上传一个包含图像的 zip 文件,服务器将提取它们并将每个图像插入到图像库中。我注意到这会严重消耗 CPU 并导致其他请求变慢。

我正在考虑使用delayed_job插件将每个图像添加委派到后台,但我也想给该进程一个较低的CPU优先级,这样它就不会阻塞服务器。

我对练习的延迟部分非常有信心,但节流部分是我卡住的地方。有没有一种方法可以降低方法调用的优先级?

这是导致 CPU 咀嚼的图像大小调整。

欢迎任何想法:)

0 投票
1 回答
953 浏览

ruby-on-rails - 带延迟作业的日志格式

我正在从 perform 方法中写入 log/delayed_job.log:

在 log/delayed_job.log 中,我的错误消息被打印出来,但与 delay_job 记录的其他消息相比,没有任何格式(以日期/时间为前缀):

有没有办法使用delayed_job的记录器来获得这种类似的格式?还是我必须创建自己的日志方法来为日期添加前缀?

0 投票
3 回答
576 浏览

ruby-on-rails - 在 Rails 应用程序中,电子邮件应该作为后台作业发送还是同步发送?

我们即将发布我们的新 Rails 应用程序,到目前为止,兴趣似乎非常强烈,我们有点担心瓶颈会在哪里。一个似乎是注册和其他情况下的系统电子邮件。它是否正确?

是否应该在后台异步发送给用户的个人电子邮件?如果是这样,最好的解决方案是什么?

我查看了一些解决方案,但似乎找不到任何确定的解决方案。

0 投票
1 回答
226 浏览

queue - 有什么方法可以让延迟作业在启动时执行一些一次性代码并在所有作业中使用?

所以我有一个delayed_job 任务将一些信息推送到XMPP 服务器。理想情况下,您创建一次到 XMPP 的连接,然后不断地向它推送数据,而不是每次有一些数据要发送时都创建一个新连接。

delay_job 中是否有任何设施用于在工作人员启动时运行某种“设置”方法,是否设置了一些实例变量(如 XMPP 连接对象),然后可以被所有出现的作业使用?如果每个工作人员都运行自己的设置方法,那也没关系。我只是不希望每个工作(每天数千个)每次都从头开始连接到 XMPP 服务器。

谢谢你的帮助!

0 投票
1 回答
94 浏览

php - 如何在 PHP 和 JavaScript 中实现临时可撤消的操作?

我想实现在用户完成后短时间内可撤消的操作。即,如果用户对照片站点中的照片进行投票,他/她可以在 30 秒内撤消投票。这类似于 StackOverflow 上的投票工作方式,您可以在短时间内撤消您的投票。

我应该如何实施?我想出于性能原因,我不应该在延迟超时之前将投票提交给数据库。并且在 JavaScript 中很难做到这一点,因为如果用户在延迟超时之前更改网站,那么投票就会丢失。也许我可以在 cookie 中做到这一点,或者最好的解决方案是在 PHP 会话中做到这一点,但是我如何在延迟之后提交操作呢?

0 投票
2 回答
1846 浏览

ruby-on-rails - 在 Rails 中具有状态的后台作业

嘿。我想上传一个文件然后解析它。因为解析最多需要 10 分钟,所以我安装了延迟作业插件并通过 send_later 函数调用解析函数。我不得不提到这是一个 AJAX 应用程序。

想象一下,您按下一个 AJAX 按钮开始上传,然后将源导入数据库。在此过程中,我想显示进度条或消息(正在导入...),并且当它完成任务状态更改为完成时。

我的问题是:检查流程状态的最佳方法是什么。你会怎么办?我的想法是让另一个控制器操作“状态”,它查看数据库并提供正确的状态。

0 投票
3 回答
2891 浏览

ruby-on-rails - 从 Rails 应用程序中监视数据库表的外部更改

我在我的 Rails 应用程序中集成了一些非 Rails 模型表。一切都很顺利,我设置模型的方式是:

这样我就可以将Change模型用于所有现有记录find等。

现在我想在将记录添加到表时运行某种通知。由于模型永远不会通过创建Change.new,因此Change.save使用ActiveRecord::Observer不是一种选择。

每当添加新记录时,有什么方法可以让我的一些 Rails 代码被执行?我看了看,delayed_job但无法完全理解,如何设置。我想它是围绕一个 cron-job 发展的,它选择自上次运行作业以来创建的所有行,然后为每一行调用相应的 Rails 代码。

更新目前正在查看 Javan 的When,看起来它可以解决“从 cron 部分运行 rails 代码”。

0 投票
2 回答
2724 浏览

ruby-on-rails - Rails 延迟作业和库类

嘿,我们有一个调用延迟作业的库类(lib/Mixpanel),如下所示:

问题是,当我们运行 rake jobs:work: 时,会出现以下错误:

知道为什么吗?

0 投票
3 回答
1344 浏览

ruby-on-rails - Delayed_Job - 在 site5 服务器上

我目前正在使用 site5 服务器,并且想 rake jobs:work一直运行。除非我登录到服务器,否则我目前无法发送作业。我希望有人可以帮助我解决这个问题。ar_mailer和gem遇到了很多麻烦whenever......但是在我的 rails 应用程序中还有大约 5 个 gem 可以完美运行。

有人可以解释一下这个解决方案吗?非常感激。(作为插件安装了delayed_job)

0 投票
4 回答
8841 浏览

ruby-on-rails - 启动或确保延迟作业在应用程序/服务器重新启动时运行

我们必须使用delayed_job(或其他一些后台作业处理器)在后台运行作业,但我们不允许更改服务器上的启动脚本/启动级别。这意味着如果提供程序重新启动服务器,则不能保证守护程序保持可用(因为守护程序将由每个部署仅运行一次的 capistrano 配方启动)。

目前,我能想到的确保delayed_job 守护程序始终运行的最佳方法是向我们的Rails 应用程序添加一个初始化程序,以检查守护程序是否正在运行。如果它没有运行,则初始化程序启动守护程序,否则,它就让它保持原样。

因此,问题是我们如何检测 Delayed_Job 守护进程正在从脚本内部运行?(我们应该能够相当容易地启动一个守护进程,有点我不知道如何检测一个是否已经处于活动状态)。

有人有想法么?

问候,伯尼

根据下面的答案,这就是我想出的。只需将其放入 config/initializers 中即可: