私はセロリを使用しており、ブロードキャストタスクを数人のワーカーに送信したいと考えています。http://docs.celeryproject.org/en/latest/userguide/routing.html#broadcastで説明されているようにしようとしているので、タスクで簡単なアプリを作成します:
@celery.task
def do_something(value):
print value
そして私が作ったアプリで:
from kombu.common import Broadcast
CELERY_QUEUES = (Broadcast('broadcast_tasks'), )
CELERY_ROUTES = {'my_app.do_something': {'queue': 'broadcast_tasks'}}
そして、私はタスクをワーカーに送信しようとしていました:
my_app.do_something.apply_async(['222'], queue='broadcast_tasks')
また:
my_app.do_something.apply_async(['222'])
残念ながら、最初の方法では、タスクは「通常」一度に1人のワーカーにのみ送信されます。したがって、2人のワーカーがいる場合、タスクは1回または最初に2番目のワーカーで1回実行されます。2番目の方法では、このタスクがどこで行われたかわかりません。どのワーカーにもその結果がないためです。たぶん、あなたの誰かがブロードキャストのように機能しない理由と、ここで私が間違っていることを知っているでしょう。助けてくれてありがとう。