繁体   English   中英

如何仅用cron运行一次rake任务?

[英]How to run a rake task with cron just twice?

我想知道RoR中是否有办法在不同的时间两次运行rake任务或ruby代码。 例如,当用户注册时,请在三天后运行任务,然后在一周后运行同一任务,但不再执行此操作(“停止该过程”)。 我一直在看crontab和诸如Resque,Stalker,Starling等宝石,但是我不清楚这些宝石能为我提供哪些帮助。 我在考虑为每个用户运行一个守护程序并计算任务执行次数。问题是该守护程序将一直在“消耗”资源的状态下处于活动状态。 有没有办法使用最少的资源? 我想稍后在Heroku中运行它。

我通常用记录上的日期列来解决这类问题(例如first_reminder_sent_at,user_responed_at,week_reminder_sent_at)。 在这种情况下,第一个项目的日期,用户的响应以及之后一周的项目。

创建一个cron任务以调用rake任务-查看所有3天前,<1周内,用户未响应,未设置日期的用户。 排队后台作业。 作业将发送邮件(或任何任务),然后在记录中设置日期字段。

Cron任务以调用rake任务-查看具有1周以上历史的所有用户,而该用户没有响应且未设置日期。 发送提醒并在后台作业中设置日期。

尝试执行每当cron并创建一个rake任务,该任务正在做您的工作..并且在rake任务何时以及如何执行其操作时在数据库中创建一些触发器字段。

Posix系统具有at命令,这是一种安排作业稍后运行一次的简单方法。 尽管使用基于应用程序的排队机制安排以后的工作没有其他问题,如其他答案中所述。 at是特定at主机的,因此如果您正在运行集群,则可能不合适,尤其是在主机可能是瞬态的情况下。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM