私は、DjangoアプリケーションをAWS LambdaにZappaでデプロイすることを実験しています。サーバレスAWSの非同期タスクキューLambda/Django/Zappa
私の他のいくつかの(EC2/EBSがホストする)Djangoプロジェクトでは、かなり時間がかかる重い計算を行う必要がある場合(電子メールをたくさん送信する、分)、Celeryが使用されます。これはタスクキューシステムであり、タスクはキューに送られ、応答はすぐに返され、後で作業者が処理することができます。
ラムダで実行されているZappa-Djangoアプリのためにセロリのようなタスクキューイングシステムを実装する最良の方法は何でしょうか?
ザッパ/ラムダは、スケジュールされたタスクをサポートし、アプリケーションのモデルは、処理は、後にスケジュール機能によって行うことができるとの結果がDBに保存することができように設計することができます。しかし、私は1分ごとにタスクのポーリングが十分に頑強だとは思っていません。遅延タスクをすぐに開始する必要が頻繁にあります。
後に実行されるようにキューに入れられた任意のパラメータで(Djangoのアプリ内からの)機能をすぐにDjangoのビューからの応答を返し、持ってする簡単な方法はありますか?
これは最適な解決策であるかどうかはわかりません。それはうまくいくかもしれませんが、タスクのコンシューマーは別のラムダ関数で実行される別々のコードでなければなりませんか?また、すべてのデータはJSONシリアライズ可能ではなく、djangoアプリケーションからの環境変数などは利用できません。 – tuoppimas
セロリも同じように動作します。タスク引数はjsonにシリアル化され、別のプロセスはタスクを実行します。 変数が必要な場合は、 "worker"ラムダに設定ファイルを含めることができます。 – Raz
ありがとう、私はそれを調べます。それにもかかわらず、別のLambaの機能「デプロイメント」が必要ですか?自動的にタスクを除く他のすべてのコードから剥がし、他の1 - たぶん、二つの別々のジャンゴ・ザッパの展開は、解決策になる可能性があります。 – tuoppimas