私はなんとか単一のマシンを手に入れて作業Django
するRabbitMQ
ことができました。ここCelery
からの指示に従いました。今、私はそれらを一緒に動作させたいと思っていますが、それらが異なるサーバー上にある状況にあります。についても、についても知りたくありません。Django
Celery
Celery
Django
Django
したがって、基本的には、いくつかのメッセージをキューに送信したいだけですRabbitMQ
(おそらく ID、タスクの種類、おそらく他の情報)。次に、RabbitMQ
そのメッセージを (可能な場合)Celery
別のサーバーに公開します。Celery/Django
基本的にはどちらか一方を置き換えやすいアーキテクチャが欲しい。
今、私は次Django
のようないくつかの呼び出しを持っています
create_project.apply_async(args, countdown=10)
これを、RabbitMQ への同様の呼び出しに直接置き換えたいと思います (前述のようにDjango
、依存すべきではありませんCelery
)。次に、(可能な場合)RabbitMQ
通知し、その仕事をします(おそらくインターフェイスを介して対話します)。Celery
Celery
Django
REST
Celery
また、 2 つ以上のサーバーにワーカーを配置する必要がありRabbitMQ
、メッセージのフィールドに応じてそのうちの 1 つだけに通知したいと考えています。これが複雑すぎる場合は、(異なるマシン上の) すべてのタスクを次のようにチェックインすることができます: これはあなたがすべきことです (メッセージの IP アドレス フィールドをチェックするなど)。
どうすればこれを達成できますか?可能であれば、理論的な説明だけでなく、コードと構成の例を好むでしょう。
編集:
私のユースケースでは、セロリは総オーバーヘッドだと思います。カスタム クライアントを使用したシンプルな RabbitMQ ルーティングで十分です。私はすでに単純なユース ケース (1 つのサーバー) を試しましたが、完全に機能します。通信をマルチサーバー化するのは簡単なはずです。私はセロリが好きではありません。それは「魔法のよう」で、あまりにも多くの詳細を隠し、設定が簡単ではありません。しかし、他の人の意見に興味があるので、この質問はそのままにしておきます。