1

私はDjangoで働いており、django-celeryをインストールしました。セロリデーモンがローカルサーバーで実行されており、タスクを受け入れ/実行しています。

私にとっての最後の部分は、別のサーバー上のAMPQブローカーにメッセージを送信するタスクを作成することです。ブローカーの構成はsettings.pyファイルにありますが、AMPQサーバーに接続してメッセージを作成する方法(ヘッダーとjsonでエンコードされたペイロードを使用)がわかりません。

そして今、私は外部のAMQPブローカーにメッセージを送信するためだけにセロリを実行する必要があるのか​​どうか疑問に思いました。

アップデート:

Kombuを使用してAMQPブローカーに公開していますが、正しい交換、routing_key、exchange_typeを使用してパブリッシャー接続を正常に確立できるようです。私のメッセージは、3つのキーと値のペアを持つヘッダーとjsonでエンコードされたペイロードで構成されている必要があります。メッセージの作成方法がわかりません。

4

1 に答える 1

1

Celeryにはクライアントサーバーアーキテクチャがあります。クライアント側はブローカーにメッセージを公開し、サーバー側はブローカーからのメッセージを消費します。

メッセージを公開するためにセロリを実行する必要はありません。ブローカーにメッセージを送信するには、settings.py構成ファイルでBROKER_URLオプションを構成し、タスクのdelay/apply_asyncメソッドを呼び出します。Celeryは、必要なメッセージを作成して公開します。

ただし、ブローカーからのメッセージを使用するには、サーバー側で(celerydまたはceleryd_multiコマンドを使用して)Celeryワーカーを起動する必要があります。

于 2012-03-07T12:27:33.443 に答える