好的,所以这可能是邪恶的,但是......这就是问题所在!我想在共享环境(site5)上运行一个非常轻量级的应用程序。理想情况下,我想使用delayed_job来轻松排队邮件(每隔一段时间约200次)。但是,作为一个共享环境,他们不希望后台进程一直在运行(足够公平)。
所以,我的计划就是使用延迟的工作对邮件进行排队,然后每小时或某些事情,启动一个cron作业,发送一些电子邮件(10或小的东西),然后杀死进程。并重复一遍。
问)是否有佣金工作:工作:1个相同的任务,它很容易设置? - 指针会很方便。
我很乐意“这是一个可怕的想法,甚至不去那里”作为答案..在这种情况下,我可能会看另一个排队策略...(或者heroku雇佣 - 火可能...... )
答案 0 :(得分:2)
您可以通过执行以下操作来延迟作业以仅处理一定数量的作业:
Delayed::Worker.new.work_off(10)
您可以从cron触发脚本来执行此操作或使用“rails runner”:
rails runner -e production 'Delayed::Worker.new.work_off(10)'
我认为关于它是否是一个好主意的主要问题是确定小值实际上足够高,以确保您在合理的时间范围内处理所有工作。此外,每次要处理,甚至检查是否应该处理任何作业时,都会遇到启动rails环境的开销。如果它们对内存峰值或CPU使用率特别严格,那么这可能会在共享环境中引起问题。
答案 1 :(得分:0)
为什么不跳过'workers'(这些只是寻找其他工作的守护进程睡眠)并让你的cron触发自定义rake任务10.times {MailerJob.first.perform}
你需要在那之前要求你在线上的应用程序,以便加载它。