2016-03-02 154 views
4

我正在嘗試使用Firebase運行cron作業。基本上我需要運行一個函數,每天在太平洋標準時間上午12:00發出大量API調用並將數據推送到firebase。有沒有辦法讓我在服務器端使用Firebase執行此操作?如何使用Firebase運行cron作業?

我看到有這個模塊here,,但我不明白它是如何工作的。如果任何人有任何想法或知道如何上述模塊可以工作,這將是太棒了。

編輯:理念。如果我要創建一個顯示功能完成時間的數據條目,該怎麼辦?基本上檢查一下上次調用和完成函數的時間。如果已經過了上午12點,那麼該函數被調用並且該字段被更新以便在第二天之前不被調用。這是個好主意嗎?我不需要在上午12點準確地完成功能,我只需要在第一個用戶登錄時完成。

+1

Firebase只存儲數據 - 要運行cron作業,您需要訪問自己的服務器。 – nathanhleung

+0

@nathanhleung我剛剛編輯了這個問題......你認爲這將是一個好的解決方案嗎? –

+0

您仍然需要檢查數據條目 - 很可能是您自己的服務器 – nathanhleung

回答

2

上個月,Firebase發佈了雲端函數。

在那裏,您可以根據不同的鉤子觸發類似lambda的函數:發佈/訂閱事件,HTTP事件,... 他們計劃發佈一個cron hook,您可以使用cron規則觸發特定功能。它尚未釋放,但同時,你可以使用Google App Engine

+0

https://firebase.googleblog.com/2017/03/how-to-schedule-cron-jobs-with-cloud.html – Incinerator

2

回答有關如何firebase-cron作品的問題:

該模塊需要在一臺服務器的某個地方,使得它一直在運行。 作業運行時,所有這一切意味着它將爲該作業提供指定的數據,並將其放入指定的firebase-queue參考中。作爲用戶,您可以設置firebase-queue在將數據添加到隊列中時運行。

可以通過指定的名稱,cron的模式增加了「的cron」工作,以及數據使用.addJob方法添加到隊列:

cron.addJob('foo', '0 0 0 * * *', {foo: 'bar'}, function(err) { 
    if (err) return console.error(err); 
    console.log('added foo'); 
}); 

使用.run方法來啓動firebase-cron。這將檢查作業列表並執行任何需要執行的操作。此方法還需要一個回調函數,每次檢查作業時都會調用這個函數(我使用這個函數進行額外的日誌記錄)

有一些事情我想添加到firebase-cron,它是文檔但沒有得到它們然而。我一直在生產環境中使用它一段時間,並沒有任何問題與firebase-cron本身...只是用戶錯誤在我的隊列邏輯;)

此外,我一直在使用新的Firebase雲功能,他們很棒。我可以添加一項功能來觸發雲端功能,而不是使用firebase-queue。一旦他們的cron服務運行,這可能不是必需的。