簡體   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