通过 Mongrel Cluster 使用 Starling 和 Mongrel 的多个实例
情况:
- 在典型的集群设置中,我有 5 个 mongrel 实例在 Apache 2 后面运行。
- 在我的一个初始化程序文件中,我使用
Rufus::Scheduler
安排一个 cron 任务,该任务基本上会发送几个电子邮件。
问题:
- 该任务运行 5 次,每个 mongrel 实例运行一次,每个收件人最终会收到 5 封邮件(尽管我存储了每封已发送邮件的日志并在发送前检查日志)。是否有可能由于所有 5 个实例同时运行该任务,因此它们最终会在写入电子邮件日志之前读取它们?
我正在寻找一种解决方案,使任务仅运行一次。我还有一个正在运行的 Starling 守护进程可供使用。
Situation:
- In a typical cluster setup, I have a 5 instances of mongrel running behind Apache 2.
- In one of my initializer files, I schedule a cron task using
Rufus::Scheduler
which basically sends out a couple of emails.
Problem:
- The task runs 5 times, once for each mongrel instance and each recipient ends up getting 5 mails (despite the fact I store logs of each sent mail and check the log before sending). Is it possible that since all 5 instances run the task at exact same time, they end up reading the email logs before they are written?
I am looking for a solution that will make the tasks run only once. I also have a Starling daemon up and running which can be utilized.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
rooster Rails 插件专门解决了您的问题。它使用 rufus-scheduler 并确保环境仅加载一次。
The rooster rails plugin specifically addresses your issue. It uses rufus-scheduler and ensures the environment is loaded only once.
我现在的做法是:
以下是执行此操作的代码:
The way I am doing it right now:
Here is the code that does it:
为什么不使用 mod_passenger (phusion)?我从 mongrel 转向 phusion,效果非常好(时间少于 5 分钟)!
Why dont you use mod_passenger (phusion)? I moved from mongrel to phusion and it worked perfect (with a timeamount of < 5 minutes)!