2011-01-12 3 views
1

私はHerokuを使って小さなアプリをホストしています。これは、すべての検索リクエストに対してMechanizeとNokogiriを使用してスクリーンスクレーパーを実行しています。これは完了するまでに約3秒かかります。遅延バックグラウンドジョブとは何ですか?どのように機能するのですか?

スクリーンスクレイパーは、その時点でアプリにアクセスしたい他のユーザーをブロックしていますか?言い換えれば、現在のユーザーだけ、または全員のための保持モードですか?

答えて

2

heroku dynoが1つしかない場合は、他のユーザーが行を待たなければならない場合があります。

バックグラウンドジョブは、あなたのような場合があり、実行する処理が多少あります。プロセス実行レールはハードワークを最前線で行うのではなく、バックグラウンドジョブを実行して迅速に応答し、他の要求に応答するように解放します。

バックグラウンドジョブによって処理されたデータは、後で表示されます。たぶんリクエストの時間がかかったり、ジョブが完了するたびにjavascriptによってロードされたりします。

2

明らかに、dynoはシングルスレッドであるため、他の要求はdynoがフリーになるまでキューに入れられ、30秒以上ハングしてもタイムアウトになります。

外部サービスに依存するものは、DJを介してワーカーを介して実行するのが最良です。つまり、電子メールを送信しても、コントローラはそのメッセージをキューに入れ、ユーザーを画面に戻してからメールを受け取ります。 DJが配信して、ユーザーは郵送プロセスが完了するのを待つ必要はありません。

は、あなたのキュー長が

ジョンをやっているかを見るためにNewRelicの宝石をインストールします。

2

フルサービスワーカーシステムに興味がある場合は、Heroku AppstoreアプリSimpleWorker.comのベータテスターを探しています。それはHerokuにしっかりと統合されており、DJよりも多くの利点があります。

私たちの弾力的な労働者の雲にあなたの仕事を送付するのは数行のコードと同じくらい簡単です。従業員の数を制限しないので、大規模な並列処理を利用することができます。

興味のある方は、私にメッセージを送りましょう。

チャド

+0

はい、そうかもしれません。あなたのメールは何ですか? – picardo

+0

メールサポート[at] simpleworker.com - それは私にまっすぐに行きます。遅れて申し訳ありません - SOは何らかの理由で私に通知しませんでした。 :( – Chad

関連する問題