2

我正在使用 Ruby on Rails 构建一个药物提醒系统,以部署在 heroku 上。

使用该系统,医生将输入患者的药物详细信息,包括药物名称、剂量以及时间详细信息,然后应用程序将通过短信通知患者何时该服药。

我已经开发了应用程序,但我被困在短信部分,因为这涉及一遍又一遍地运行一个过程,直到药物的期限结束。

我希望能够从 Rails 应用程序运行脚本,该应用程序将重复查询数据库,并在需要发送短信时将其发送给患者。这在正常的请求/响应 Web 周期中不起作用。

我探索了允许开发人员创建后台作业(如 rufus 调度程序和 resque)的 ruby​​gems,但我似乎无法弄清楚如何去做。

请帮助我接受所有类型的建议。我正在使用 Twilio 发送短信

4

3 回答 3

1

我不知道 resque/rufus,但我知道 sidekiq 能够对作业进行排队,但会将它们延迟到某个时间。

https://github.com/mperham/sidekiq/wiki/Delayed-Extensions#advanced-options

您需要根据您的需要查看延迟的精确程度(即sidekiq 的轮询频率是多少),但我怀疑这会很好。

这将需要另一个发电机或这些天 Heroku 所说的任何东西。

于 2014-05-29T18:51:20.203 回答
1

我使用 delay_job 使用 run_at 参数通过 Heroku 的 Twilio 发送预定的 SMS。

我的消息模型上有一个 send_message 方法,它使用 Twilio API 进行实际发送。我选择使用延迟作业创建自定义作业,因此当我安排消息时:

Delayed::Job.enqueue my_custom_job, :run_at => TIME_I_WANT_TO_SEND

使用 heroku worker 来运行发送的后台任务已经非常可靠了。

于 2014-06-01T01:07:46.480 回答
0

由于您要部署到 Heroku,因此必须阅读他们关于调度作业的文档:

https://devcenter.heroku.com/articles/scheduler

于 2014-05-30T00:25:17.267 回答