期待通りに動作していないと私は、しかし、それが期待どおりに動作しない特定のキューに自分のタスクを割り当てるセロリタスクルートは、私はセロリを練習しています
マイ__init__.py
import os
import sys
from celery import Celery
CURRENT_DIR = os.path.dirname(os.path.abspath(__file__))
sys.path.append(CURRENT_DIR)
app = Celery()
app.config_from_object('celery_config')
マイcelery_config.py
amqp = 'amqp://guest:[email protected]:5672//'
broker_url = amqp
result_backend = amqp
task_routes = ([
('import_feed', {'queue': 'queue_import_feed'})
])
マイtasks.py
from . import app
@app.task(name='import_feed')
def import_feed():
pass
私は、ワーカーの実行方法:
celery -A subscriber1.tasks worker -l info
私のクライアントの__init__.py
:
import os
import sys
from celery import Celery
CURRENT_DIR = os.path.dirname(os.path.abspath(__file__))
sys.path.append(CURRENT_DIR)
app = Celery()
app.config_from_object('celery_config')
私のクライアントのcelery_config.py:
from kombu.common import Broadcast
amqp = 'amqp://guest:[email protected]:5672//'
BROKER_URL = amqp
CELERY_RESULT_BACKEND = amqp
を
はその後、私のクライアントのシェルに私が試した:
from publisher import app
result = app.send_task('import_feed')
その後、私の労働者が仕事を得ましたか私はそれを特定のキューに割り当てたので、私はそれをしてはいけません。私は、ルーティングの部分で何かを誤解のように、私は最初の1
result = app.send_task('import_feed', queue='queue_import_feed')
に代わりに受け取っていることを期待し、以下のコマンドと全くタスクが私の労働者によって受信されていないが思え、私のクライアントで試してみました。しかし、私が本当に望んでいるのは、import_feed
タスクは、タスクを送信するときにqueue_import_feed
キューが指定されている場合にのみ実行されます。
申し訳ありませんが、それは本当に質問に答えませんでした。私はそれがそうすることができることを知っています。私はちょうど私の最後の声明が起こるようにしたい –
あなたの最後の声明は、キューが指定されている場合にのみ、特定のタスクを実行するよう求めています。 [自動ルーティング](http://docs.celeryproject.org/en/latest/userguide/configuration.html#task-create-missing-queues)を無効にして、このようなタスクが ' celery' queue –
私が望むのは、 'celery -A subscriber1.tasks worker -l info'を実行してワーカーを実行しているキューを指定しないで、' import_feed'タスクがタスクの公開時に反応するように制限します。 'queue_import_feed'キュー。それは不可能ですか? –