web-dev-qa-db-ja.com

セロリ-リモートマシンからタスクを送信する方法

セロリワーカーを実行するサーバーとRedisキューがあります。タスクはそのサーバーで定義されます。
これらのタスクをリモートマシンから呼び出せるようにする必要があります。
私はそれがsend_taskしかし、まだ方法がわかりませんか?どうすればsend_taskキューはどこにありますか?接続パラメーター(または必要なもの)はどこに渡しますか?私は何時間も探していましたが、見つけることができるのはこれだけです:

from celery.execute import send_task
send_task('tasks.add')

まあ、それは私が自分の呼び出しマシンにもceleryが必要であることを意味します。しかし、他に何を設定する必要がありますか?

28
user1102018

これは1つの方法である可能性があります。Celeryオブジェクトを作成し、そのオブジェクトからsend_taskを使用すると、オブジェクトはブローカーを見つけるための構成を持つことができます。

from celery import Celery
celery = Celery()
celery.config_from_object('celeryconfig')
celery.send_task('tasks.add', (2,2))

celeryconfigはセロリ構成を含むファイルですが、セロリオブジェクトに構成を設定する方法は他にもあります。

40
Leonardo Ruiz

リモートマシンで、broker_urlがタスクを実行するマシンを指すようにceleryを起動します。次に、タスクを送信するだけです(送信する特定のキューがある場合は、適切なルーティングキーを追加します)。

0
MICHAEL SMITH

ルーティングルールを定義する方法はいくつかありますが、最も一般的なものはカスタムルーターオブジェクトです。すべての場合において、呼び出し元はrouting_keyパラメータsend_taskdelayまたはapply_asyncとルーターは、タスクを送信するキューを決定します。

0
Chris Johnson