0

現在、django で構築され、heroku を介してデプロイされた、学校向けのカスタム cms 製品があります。追加する学校システムごとに新しい展開を行います。(システムをマルチテナント システムに切り替えたいのですが、それは大きなプロジェクトになるでしょう。) 最近、非同期で最適に動作する機能をいくつか追加しました (データベースを集中的に使用するアクションのためのメール送信者と非同期キャッシュ更新)。バックグラウンド タスクをセロリ タスクとして記述しましたが、うまく機能します。問題は、セロリ ワーカーを 24 時間年中無休で実行すると、アプリごとに 34.50/月の費用がかかることです。実際には、これらのタスクは 1 日あたり数分間の非アイドル時間しかありません。このコストは、私が現在クライアントごとに異なるインスタンスで heroku を使用している方法を考えると、heroku の使用をほとんど不可能にします。誰かがこのシナリオに対処し、24 時間年中無休でワーカー プロセスを実行することなく、定期的に (できればセロリを使用して) バックグラウンド処理を行う方法を推奨できますか? cache-refresher は数分ごとに実行する必要がありますが、emailer はめったに実行されません (購読者に電子メールを送信する場合のみ)。

4

2 に答える 2

1

ワーカーがすぐに関与する必要がない場合は、スケジューラ アドオンを使用して定期的にタスク キューをクリアできます。

より速い応答時間が必要な場合は、Heroku API の Python ラッパーを参照してください。 これにより、さまざまなメソッドを使用して、ワーカーを実行する必要があるときを検出し、ワーカーを動的にスピンアップし、不要なときにスピンダウンすることができます。これは重要なエンジニアリング タスクです。

于 2012-12-07T17:23:55.320 に答える
0

興味深いことに、この質問に対するブログ投稿形式の回答は、私が投稿した同じ日に私の RSS フィードから届きました。

http://heyman.info/2012/dec/6/heroku-multiple-processes-single-dyno-with-foreman/

要約すると、Foreman を実行するように Procfile をセットアップすると、複数のプロセス間で dyno 時間を分割できます。まだ試していませんが、トラフィックの少ないサイトやテスト サイト向けの正当なアプローチのようです。

于 2012-12-15T16:37:00.023 に答える