アップデート:
同じ問題がある場合は、前に「遅延したジョブが完了したことを ajax プロセスに通知する」をお読みください。ありがとうジーン。
同時実行性に問題があります。いくつかの Web サイトをスクレイピングするコントローラーがありますが、コントローラーへの呼び出しごとに応答するのに約 4 ~ 5 秒かかります。
したがって、2 回 (またはそれ以上) 連続して呼び出すと、2 回目の呼び出しは最初の呼び出しを待ってから開始する必要があります。
では、コントローラーでこの問題を解決するにはどうすればよいですか? 多分EventMachineのようなもので?
更新と例:
application_controller.rb
def func1
i=0
while i<=2
puts "func1 at: #{Time.now}"
sleep(2)
i=i+1
end
end
def func2
j=0
while j<=2
puts "func2 at: #{Time.now}"
sleep(1)
j=j+1
end
end
whatever_controller.rb
puts ">>>>>>>> Started At #{Time.now}"
func1()
func2()
puts "End at #{Time.now}"
したがって、同じユーザー/ブラウザ/などから同時にhttp://myawesome.app/whateverを数回要求する必要があります。
Unicorn で Heroku (およびローカル) を試しましたが、成功しませんでした。これが私のセットアップです。
- unicorn.rb http://pastebin.com/QL0wdGx0
- プロファイル http://pastebin.com/RrTtNWJZ
- Heroku のセットアップ https://www.dropbox.com/s/wxwr5v4p61524tv/Screenshot%202014-02-20%2010.33.16.png
要件:
- RESTful ソリューションが必要です。これは API なので、JSON に応答する必要があります
詳細: 現在、2 つのクラウド サーバーを実行しています。
- Heroku とユニコーン
- Nginx + Panssenger を使用した Engineyard Cloud