Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 轨道&x2B;sidekiq特定日期和时间作业_Ruby On Rails - Fatal编程技术网

Ruby on rails 轨道&x2B;sidekiq特定日期和时间作业

Ruby on rails 轨道&x2B;sidekiq特定日期和时间作业,ruby-on-rails,Ruby On Rails,我们如何使用rails将作业添加到sidekiq,并使用db time将其添加到特定日期和时间,我想在约会时间到来时发送电子邮件,那么最好的方法是什么?在约会模型中附加约会日期(或者更好的是指定约会通知日期时间) 然后,让后台作业每分钟排队一次,检查所有未发送的关闭事件通知(例如,约会通知在未来少于1分钟且尚未发送的事件),并为每个约会队列发送电子邮件 您可能希望使用sidekiq对电子邮件进行排队,并使用诸如clockwork之类的cron系统在sidekiq上对任务进行排队,以每分钟检查发送

我们如何使用rails将作业添加到sidekiq,并使用db time将其添加到特定日期和时间,我想在约会时间到来时发送电子邮件,那么最好的方法是什么?

在约会模型中附加约会日期(或者更好的是指定约会通知日期时间)

然后,让后台作业每分钟排队一次,检查所有未发送的关闭事件通知(例如,约会通知在未来少于1分钟且尚未发送的事件),并为每个约会队列发送电子邮件


您可能希望使用
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.明天.中午)