2014-01-19 17 views
2

我有一個Django應用程序在Heroku上運行,並使用Heroku Postgres數據庫。這是相當低的流量,我想保持每月的成本儘可能低(現在,它免費運行Heroku的750免費小時/月)。我有一些簡單的cron作業,實現爲調用Django管理命令,我想運行,但我不知道如何使用Heroku執行此操作。我已經讀了一些關於Scheduler的內容,但我仍然對一些事情感到困惑。首先,如果調度程序在自包含的dyno上運行,它如何調用Django的manage.py文件?其次,調度程序任務通常需要多少個動態小時?例如,如果任務只需要30秒運行,那麼我是否只需要30秒的使用費用,或者是否有更多的費用與旋轉(然後降低)測功機有關?如何使用Heroku和Django實現簡單的cron作業

回答

1

首先,如果調度程序在獨立的dyno上運行,它如何調用Django的manage.py文件?

當您上傳(推送)您的項目時,它被編譯爲slug。這個slu is分配給運行你的網絡應用程序的每個dyno,每一個關閉dyno也是如此。這意味着在您運行的每個測功機上都會有一個manage.py的副本,通過調度程序或heroku run命令。


其次,有多少DYNO-小時沒有一個計劃任務通常需要嗎?

計劃程序附加程序運行一次性測試程序,該測試程序將計入您每個月收取的動態小時數。


如果任務只需要30秒來運行,例如,我只是在標榜爲使用30秒,或與旋轉起來(再向下)相關的還有更多的成本DYNO?

任何花費在執行一次性測功機上的時間都將有助於使用,並且將像使用其他測功機一樣收取費用。

這意味着使用30秒的任務需要30秒的測功機時間(REF)。我不相信你是因爲啓動/停轉時間而被指控的,但是當python用來加載你的應用程序到可以運行你的管理命令的時候,你將被收費,所以儘量保持您的應用程序在助推時間方面儘可能輕。

1

其實,你可以試試APScheduler

它甚至允許1分鐘的任務,是完全免費的。

你只需要定義時鐘進程並打開時鐘。

您可以在page上看到一步一步的教程。