2017-05-02 11 views
1

私はセロリ実行セロリマルチ労働者の予期しないタスクの実行順序

@task.periodic_task(run_every=timedelta(seconds=5), ignore_result=True) 
def test_log_task_queue(): 
    import time 
    time.sleep(10) 
    print "test_log_task_queue" 

ルーティング:

CELERY_ROUTES = { 
    'myapp.tasks.test_log_task_queue': { 
     'queue': 'slow-queue', 
     'routing_key': 'slow-queue', 
    }, 
} 

私はrabbitMQを使用します。私がrabbitMQ管理パネルを開くと、私の仕事はslow-queueであることがわかります。しかし、ログを開くと、私は両方の作業者の作業出力を見ることができます。なぜ、両方のワーカーがワーカーキューにないタスクでも、自分のタスクを実行するのですか?

答えて

0

celery multiは共有キューのように作成されます。この問題を解決するために、-Xオプションを追加しました:

celery multi start --app=myapp fast_worker 
    slow_worker 
    -Q:fast_worker fast-queue  
    -Q:slow_worker slow-queue 
    -X:fast_worker slow-queue 
    -X:slow_worker fast-queue 
    -c:fast_worker 1 -c:slow_worker 1 
    --logfile=%n.log --pidfile=%n.pid 
関連する問題