我正在使用Ruby on Rails构建药物提醒系统,以便部署在heroku上。
使用该系统,医生将输入患者的药物详细信息,包括药物名称,剂量以及时间详细信息,然后应用程序将通过短信通知患者何时服用他/她的药物。
我已经开发了应用程序,但是我被困在sms部分,因为这涉及到一次又一次地运行一个过程直到药物的时间段已经过去。
我希望能够从rails应用程序运行脚本,该应用程序将重复查询数据库,并且当需要发送短信时,它会将其发送给患者。这在正常的请求/响应Web周期中无法正常工作。
我探索了rubygems,允许开发人员创建后台作业,如rufus调度程序和resque,但我似乎无法弄清楚如何去做这件事。
请帮助我对所有类型的建议持开放态度。我正在使用Twilio发送短信
答案 0 :(得分:1)
我不知道resque / rufus,但我知道sidekiq有能力排队工作,但让他们延迟到一定时间。
https://github.com/mperham/sidekiq/wiki/Delayed-Extensions#advanced-options
根据您的需要,您需要了解延迟的确切程度(即,sidekiq的轮询频率是多少),但我怀疑这种情况会有效。
这将需要另一个发电机或heroku所称的任何发电机。
答案 1 :(得分:1)
我使用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来运行发送的后台任务非常可靠。
答案 2 :(得分:0)
由于您正在部署到Heroku,因此您必须阅读有关安排作业的文档: