0

私は、約12の更新機能を持つDjangoのHerokuにデプロイされるプロジェクトに取り組んでいます。それぞれ実行するのに約 15 分かかります。それらを update1()、update2()...update10() と呼びましょう。

Heroku に 1 つのワーカー dyno をデプロイしていますが、一度に n 個以上のこれらを実行したいと考えています (それらは実際には計算集約的ではなく、すべて HTML パーサーですが、データは時間に敏感なので、できるだけ頻繁に呼び出されるようにします)。

Celery と APScheduler のドキュメントをたくさん読んだことがありますが、どれが自分にとって最適/最も簡単かはよくわかりません。時間が重なっている場合、スケジュールされたタスクは同時に実行されますか?

これらの関数をキューに入れる方法はあるので、少なくともいくつかは同時に実行されますか? このユースケースで推奨される同時通話数は?

4

1 に答える 1

0

ユースケースの説明に基づいて、スケジューラは必要ないため、APScheduler は要件にうまく適合しません。

ワーカー dyno 以外に Web dyno はありますか? このタイプの処理の通常の設計パターンは、リクエストを受け入れる制御スレッドまたは制御プロセス (Web dyno) をセットアップすることです。これらの要求は、要求キューに配置されます。

このキューは、1 つ以上のワーカー スレッドまたはワーカー プロセス (ワーカー dyno) によって読み取られます。Celery を使用したことはありませんが、要件に一致するようです。必要なワーカー スレッドまたはワーカー dyno の数は、説明に基づいて判断するのは困難です。1 秒あたりに処理する必要がある更新要求の数も指定する必要があります。また、リクエストが CPU バウンドか IO バウンドかを指定する必要があります。

于 2012-09-30T20:35:01.173 に答える