2012-08-04 26 views
2

從我對Heroku平臺的理解中,他們只允許每個可處理HTTP請求的應用程序使用一個dyno。在Java應用程序中,我的目標是定期處理一天運行一兩次,從Facebook服務器獲取信息並相應地處理它。如果後臺工作者dyno無法處理web請求,那麼我應該如何着手在web dyno中編寫一個反覆出現的進程?如何在使網絡請求的Heroku Java應用程序中運行週期性進程

+0

爲什麼不編寫一個獨立的程序來執行該任務,並使用Heroku調度程序插件每天運行一次? – Qsario 2012-08-04 06:36:34

+0

我正在研究這樣的方法,但我遇到了與web路由相同的問題。調度程序實質上是一個定期運行的一次性過程,根據Heroku,一次性過程無法接收HTTP流量(請參閱[鏈接]中的形成動態碼與一次性碼錶(https://devcenter.heroku.com/articles/oneoff-admin-ps)) – 2012-08-04 19:20:40

+1

您能澄清爲什麼您需要該流程來接收網絡請求嗎?如果這個過程應該「從Facebook服務器獲取信息」,那麼這聽起來像你的過程將調用Facebook而不是其他方式。這是一次性測功機的完美可能。 – 2012-08-04 21:43:43

回答

0

從這個意義上說,「處理HTTP請求」是指連接的監聽端而不是發送端。在Heroku上,應用程序可以有一個單獨的Web進程*,用於監聽HTTP連接和許多其他啓動/發送HTTP請求(或連接到其他非HTTP系統)的進​​程。

*注意:您可以根據需要分配儘可能多的Dynos來運行每個進程。

要運行定期向外部服務(如Facebook)發出請求的進程,可以使用Heroku Scheduler Add-on。然後,您可以將結果存儲在許多relational or NoSQL data-storage add-ons之一中,也可以通過諸如CloudAMQP之類的消息傳遞附加程序將結果發送到其他進程。

+0

好吧,聽起來不錯。我唯一的問題是Heroku Scheduler加載項可以運行多長時間?如果它允許一段合理的時間,它應該沒問題,但如果它少於10-15分鐘,那麼應用程序真正縮放的時間可能不夠。 – 2012-08-06 18:57:59

+0

沒有時間限制,但無論過程運行多長時間,您都會收到帳單。 – 2012-08-06 21:14:33

0

如果平臺限制你,爲什麼要使用它?
還有其他平臺可以讓你執行此操作。 您可以使用OpenShift輕鬆地將Java應用程序部署到雲中,然後您可以使用Java API,而且無論如何,據我所知。
OpenShift也使用git,與Heroku一樣。
他們都是PaaS,所以這個概念是完全一樣的,我認爲你會很容易地嘗試OpenShift。
而且您還可以檢查Google App Engine以查看它是否具有此類限制。
對不起,我不知道具體的問題,我只知道至少「一個競爭對手」沒有這樣的限制。

+0

在這種情況下,如果沒有解決此限制,可能需要查看另一個PaaS。 Heroku之外的另一臺服務器負責維護此維護任務是否可行? (後臺進程只更新數據庫中的值) – 2012-08-04 19:24:18

+0

@Ryan Sasson - 您將在哪裏託管此服務器以及誰將處理其部署?你也不需要在雲端嗎? – 2012-08-05 20:00:10

相關問題