【问题标题】:Rails making new cron jobs based on user inputRails 根据用户输入制作新的 cron 作业
【发布时间】:2013-09-19 19:05:52
【问题描述】:

在我的应用程序中,我想根据用户触发操作的时间每两周调用一次操作。我想令人困惑的是为什么似乎没有直接的方法来做到这一点。

理想情况下,重复作业将设置在模型中不是其他文件。例如,whenever gem 有这些instructions

开始

$ cd /apps/my-great-project

$ wheneverize .

这将为您创建初始 config/schedule.rb 文件。

但我不想把我的日程安排在那里。我希望时间表出现在我的模型中。时间表不是我设置的,而是我的用户设置的。

是否有任何直接的方法来实现这一点?我已经为此困扰了好几个星期了。

【问题讨论】:

  • 您能否让 cron 作业定期运行(每 1/2 小时)并将日期存储在模型中,只有在基于用户操作通过测试时才会运行?

标签: ruby-on-rails cron background-process whenever cron-task


【解决方案1】:

你可以使用延迟作业。

http://asciicasts.com/episodes/171-delayed-job

您的用户可以定义存储在您的模型中的作业。您将创建第一个延迟作业,并在每个完成的作业后开始一个新的延迟作业。

如果您的用户创建了一个应该在凌晨 3:00 运行的作业,并且他在下午 3:00 保存了该作业,那么您需要创建第一个作业:

Delayed::Job.enqueue(CronJob.new(params[:id]), 1, 12.hours.from_now ) 

在开始这项工作之前,您将创建下一个工作

Delayed::Job.enqueue(CronJob.new(params[:id]), 1, 1.days.from_now )

【讨论】:

    猜你喜欢
    • 2018-04-18
    • 1970-01-01
    • 1970-01-01
    • 2016-04-22
    • 1970-01-01
    • 2020-12-11
    • 1970-01-01
    • 2020-09-30
    • 1970-01-01
    相关资源
    最近更新 更多