2016-03-01 86 views
1

我想每天使用Rufus-Scheduler發送郵件。 我嚴格遵循GitHub here(使用瘦服務器等片段)給出的指示;但nothnig發生(不郵寄),我不能想出根據Heroku的原因記錄在Heroku上製作rufus-scheduler工作

我的代碼

# config/initializers/scheduler.rb 

require 'rufus-scheduler' 


s = Rufus::Scheduler.singleton 


# Here goes my mailing code (already tested and works well) 

s.every '1d' do 

Rails.logger.info "hello, it's #{Time.now}" 
Rails.logger.flush 
end 

是否有爲了使魯弗斯 - 正點GitHub上不mentionned一些其他點工作?非常感謝

+1

如果您將Procfile添加到問題描述中,它將有所幫助。 – jmettraux

回答

1

你可以做到這一點,但你必須瞭解業餘愛好者的工作方式。每個免費帳戶is allocated hours like this

賬戶每個月都有550小時的基礎,您的免費試用版可以運行。除了這些基準時間外,使用信用卡進行驗證的帳戶還將額外獲得450小時的免費動態配額。

因爲魯弗斯調度在你的Ruby應用程序進程中的線程運行(這就是爲什麼它啓動時運行軌道控制檯運行),只要你有你的服務器(我用的PUMA)運行,魯弗斯調度會運行得很好。

不利的一面是,如果你在你的服務器上運行兩個進程,比如你用3-4個工人運行美洲獅,你將有3-4個調度程序同時運行,使它執行你的預定事件一式三份/一式四份,請牢記這一點。

因此,步驟很簡單 - 確保你有足夠的時間來運行你的賽道一直都是一個月 - 使用服務像Pingdom的,ping你的應用程序每隔幾分鐘,以保持到了極致活躍,這樣的Heroku沒有按」在30分鐘的不活動狀態下(這樣做可以釋放動力) - 應該是你需要做的所有事情

只要記住要運行一個月的測功機,你需要大約745小時您的主要分配涵蓋哪些內容(當您添加信用卡時)。如果由於某種原因,你跑出來的時間(比如你上運行帳戶的兩個不同的應用程序,並使用我下面介紹的方法),那麼這可能發生在你

第二個通知將當你達到100%發送的帳戶配額,屆時您的應用程序的配額將在該月的剩餘時間內進入休眠狀態。因此,任何使用免費dynos的應用程序在本月的其餘時間都將無法訪問。

看起來像很多麻煩,當你可以使用heroku調度程序來安排像其他人一樣的耙子任務。

1

(免責聲明,我不是Heroku的專家,但我可以谷歌我的方式,我可以閱讀文檔)。

所以,這不是你第一次的Heroku - 魯弗斯調度問題...(Rails_using Rufus in order to schedule sending mails daily

你說「以每天發送郵件」,那麼你爲什麼不使用Heroku的調度插件? https://devcenter.heroku.com/articles/scheduler它可以每天甚至每小時計劃(具有諷刺意味的是,它可能會錯過一個時間表,所以他們推薦下面的「自定義時鐘進程」)。

您是否意識到在計劃時間到來時您的測功機可能正在睡覺? Heroku在一段時間不活動之後會讓測試者「睡覺」。

Heroku的建議使用了「定製時鐘過程」:https://devcenter.heroku.com/articles/scheduled-jobs-custom-clock-processes#custom-clock-processes

你必須瞭解你的目標平臺,Heroku的,和你的系統適應它,有或沒有魯弗斯調度。作爲一個側面提示,你之前的帖子提到Passenger,這很難調整到不殺死rufus-scheduler的線程,但是這對Heroku來說不會起到很大的作用,你的dyno不應該永遠活着,rufus-scheduler無法超越其webapp的測試版,因此推薦使用「自定義時鐘進程」。