在Ruby on Rails中调度事件

时间:2013-03-29 19:18:33

标签: ruby-on-rails

很抱歉,如果这是重复的,我尝试搜索这个,但不确定使用什么搜索条件,并没有真正找到任何东西。

我有一个Ruby on Rails应用程序,用于向用户发送短信,其中包含可能使用clickatell的多项选择问题的链接。问题有与之相关的日期和时间。我想让rails on ruby​​上的ruby自动将这些短信发送到指定日期的用户手机。

我真的不知道怎么会这样做。任何人都可以向我指出一种方法,在轨道上的红宝石中安排这样的事件。我不需要一个确切的解决方案,也许如果有人能够澄清这究竟是什么,那么我可以在网上找到一些资源。

谢谢

2 个答案:

答案 0 :(得分:1)

似乎发出你的问题并不是在重新审理?在这种情况下,我不会通过cronjob这样做。我会通过以下方式执行此操作:https://github.com/bvandenbos/resque-scheduler

因此,无论何时调度问题,您只需将其添加到延迟队列中,并且resque-scheduler会在时间到来时将它们移动到正确的工作队列上。

这样您就不必担心某种轮询cronjob,这将由resque-scheduler自动完成。您还可以通过resque免费发送SMSes的异步处理。因此,如果你必须发送大量的短信,你可以并行运行它们。

所以它会是这样的:

  1. 保存问题时,您将来在延迟队列上排队邮件以发送问题
  2. 当日期出现时,邮件会移至“准备发送”队列,该队列负责收集需要发送问题的所有用户。
  3. 为每个用户在“准备发送”队列
  4. 上创建另一条消息
  5. '准备发送'队列将发出实际的短信
  6. 然后,您可以在“准备发送”队列中运行许多工作人员并将SMS同时发送出去。您还可以使用resque免费获得错误处理,它会导致在“故障”队列中导致异常的所有消息,然后您可以再次调试或重新计划

答案 1 :(得分:0)

您可以使用whenever来安排活动。