0

好的,所以这可能是邪恶的,但是..这是问题所在!我想在共享环境(site5)上运行一个非常轻量级的应用程序。理想情况下,我想使用delayed_job 来方便地对邮件进行排队(大约200+ 每隔一段时间)。但是,作为一个共享环境,他们不希望后台进程一直运行(很公平)。

因此,我的计划是使用延迟作业对邮件进行排队,然后每隔一小时左右,启动一个 cron 作业,发送几封电子邮件(10 封或一些小邮件),然后终止该进程。并重复。

Q) 是否有一个 rake jobs:works:1 等效任务,它很容易设置吗?- 指针会很方便。

我对“这是一个糟糕的主意,甚至不要去那里”作为答案持开放态度。在这种情况下,我可能会考虑另一种排队策略......(或者 heroku 雇佣火也许......)

4

2 回答 2

2

您可以通过执行以下操作获得延迟作业以仅处理一定数量的作业:

Delayed::Worker.new.work_off(10)

您可以从 cron 触发脚本来执行此操作或使用“rails runner”:

rails runner -e production 'Delayed::Worker.new.work_off(10)'

我想关于这是否是一个好主意的主要问题是弄清楚什么小价值实际上足够高,以确保您在合理的时间范围内处理所有工作。此外,每次您想要处理甚至检查是否应该处理任何作业时,都会产生启动 rails 环境的开销。如果它们对内存或 CPU 使用率的峰值特别严格,这可能会在共享环境中引起问题。

于 2012-07-26T11:36:08.137 回答
0

为什么不跳过“工人”(它们只是寻找工作的守护进程)并让您的 cron 触发 10.times { MailerJob.first.perform } 的自定义 rake 任务

您只需要在此之前要求您是该行中的应用程序,以便加载它。

于 2012-07-26T11:42:54.990 回答