我正在使用Ruby on Rails构建一个药物提醒系统,部署在heroku上。
使用该系统,医生将输入患者的药物详细信息,包括药物名称、剂量以及时间细节,然后该应用程序将通过短信通知患者何时服药。
我已经开发了应用程序,但我被困在sms部分,因为这涉及到一遍又一遍地运行一个过程,直到药物的有效期结束。
我希望能够从rails应用程序中运行脚本,该应用程序将重复查询数据库,当需要发送sms时,它会将其发送给患者。这在正常的请求/响应web周期中不起作用。
我探索了rubygems,它们允许开发人员创建后台作业,比如rufus调度程序和resque,但我似乎不知道该怎么做。
请帮助我,我愿意接受所有类型的建议。我正在使用Twilio发送短信
发布于 2014-05-30 02:51:20
我不知道resque/rufus,但我知道sidekiq有能力对作业进行排队,但会让它们延迟到特定的时间。
https://github.com/mperham/sidekiq/wiki/Delayed-Extensions#advanced-options
您需要查看延迟的精确度(即sidekiq的轮询频率是多少),这取决于您的需求,但我怀疑这会工作得很好。
这将需要另一台发电机或heroku最近对它的称呼。
发布于 2014-06-01 09:07:46
我使用delayed_job通过run_at参数从Heroku通过Twilio发送预定的短信。
我的消息模型上有一个send_message方法,它使用Twilio API执行实际的发送。我选择创建一个带有延迟作业的自定义作业,因此当我安排消息时:
Delayed::Job.enqueue my_custom_job, :run_at => TIME_I_WANT_TO_SEND使用heroku worker运行后台发送任务是非常可靠的。
发布于 2014-05-30 08:25:17
由于您正在部署到Heroku,因此阅读他们关于调度作业的文档对您来说是必须的:
https://stackoverflow.com/questions/23940521
复制相似问题