Ruby on rails 轨道&x2B;sidekiq特定日期和时间作业
我们如何使用rails将作业添加到sidekiq,并使用db time将其添加到特定日期和时间,我想在约会时间到来时发送电子邮件,那么最好的方法是什么?在约会模型中附加约会日期(或者更好的是指定约会通知日期时间) 然后,让后台作业每分钟排队一次,检查所有未发送的关闭事件通知(例如,约会通知在未来少于1分钟且尚未发送的事件),并为每个约会队列发送电子邮件Ruby on rails 轨道&x2B;sidekiq特定日期和时间作业,ruby-on-rails,Ruby On Rails,我们如何使用rails将作业添加到sidekiq,并使用db time将其添加到特定日期和时间,我想在约会时间到来时发送电子邮件,那么最好的方法是什么?在约会模型中附加约会日期(或者更好的是指定约会通知日期时间) 然后,让后台作业每分钟排队一次,检查所有未发送的关闭事件通知(例如,约会通知在未来少于1分钟且尚未发送的事件),并为每个约会队列发送电子邮件 您可能希望使用sidekiq对电子邮件进行排队,并使用诸如clockwork之类的cron系统在sidekiq上对任务进行排队,以每分钟检查发送
您可能希望使用
sidekiq
对电子邮件进行排队,并使用诸如clockwork
之类的cron系统在sidekiq
上对任务进行排队,以每分钟检查发送的通知。您可以参考rails 4.2中引入的本机活动作业API(位于sidekiq之前)
使用rails API构建作业,在conf文件中指定使用sidekiq,rails将把作业放入sidekiq中
优点:您可以切换到另一个排队gem,更容易在特定日期延迟作业,您可以执行事后操作,这通常在专业版的Sidekiq中
有关详细信息,请参见教程:
一个简单的例子:
#将明天中午执行的作业排队。
MyJob.set(等到:Date.moother.noon)。稍后执行(记录)
希望它能有所帮助我找到了解决方案,一旦创建了约会,就将当前时间的差异提取出来,以小时为单位进行转换,然后将该时间添加到新作业中,新作业将在设置的小时后执行。示例:
time=TimeDifference(time.now-appointment\u time).in\u hours
AppointmentsWorker.perform\u in(time.hours)
@user1735921我把这个片段留在这里。在Job(Worker)类MyMailer中编写此代码。发送电子邮件(选项)。稍后发送(等待至:Date.明天.中午)