2013-08-29 77 views
2

我在Heroku上運行幾個免費的單一測試應用程序,在空閒一段時間後進入「睡眠」狀態。我有一個總是醒着的主站點,並鏈接/利用這些其他有時候睡覺的應用程序。當我鏈接到主站點的睡眠應用程序時,有很長的加載等待,而另一個應用程序醒來。如何從JS中喚醒Heroku應用程序?

我想要做的是在用戶登錄主頁面時喚醒所有可能處於睡眠狀態的應用程序,有點像預加載它們,因此用戶需要時可以快速響應。

我目前在後臺使用一個簡單的$.get(...),但當然控制檯會拋出'Access-Control-Allow-Origin'錯誤。我不需要任何數據或任何東西,只是某種反應,表明應用程序已啓動並正在運行。任何人都知道我可以如何在沒有錯誤的情況下通過AJAX調用完成此操

(或者,如果有任何其他的方式,比如通過API或東西)

+0

你見過這個:http://stackoverflow.com/questions/5480337/easy-way-to-prevent-heroku-idling? –

回答

7

以下是可能的解決方案:https://coderwall.com/p/u0x3nw

僅含有一個鏈接這裏不歡迎的答案,我只是複製鏈接內容。


解決Heroku的空轉政策的常用方法是建立一個腳本來一次發送ping一小時,以保持到了極致活着。

您可以使用以下操作將New Relic的免費計劃添加到您的帳戶。

$ heroku addons:add newrelic:standard 

打開New Relic的接口:

$ heroku addons:open newrelic 

在菜單中,報告部分中,找到可用性。

添加您的網址,設置一個小時的ping時間爲<,並且您都準備好了。

使用調度

另外,如果你不喜歡或希望使用New Relic的,你其實可以通過設立的Heroku自身保持活動的DYNO平,使用Heroku的調度。

舉例來說,如果你使用Ruby,你可以使用一個Rake任務,如:

desc "Pings PING_URL to keep a dyno alive" 
task :dyno_ping do 
    require "net/http" 

    if ENV['PING_URL'] 
    uri = URI(ENV['PING_URL']) 
    Net::HTTP.get_response(uri) 
    end 
end 

添加PING_URL到您的Heroku環境:

$ heroku config:add PING_URL=http://my-app.herokuapp.com 

設置調度:

$ heroku addons:add scheduler:standard 
$ heroku addons:open scheduler 

最後一個命令應該在您的瀏覽器中打開Scheduler界面。現在,您可以設置您的dyno_ping任務運行每小時一次:

$ rake dyno_ping 

(三)原博客文章由Aupajo

1

這個錯誤是因爲Heroku的是在不同的領域,對不對?如果是這樣,一種選擇是從你的服務器發送一個請求到Heroku。更好的辦法是通過cron設置一個自動化任務來定期輪詢服務器。我推薦curl,因爲它已經安裝在大多數linux主機上。這與愛德華推薦的相同,但它不需要使用外部系統。

相關問題