首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >芹菜多工作进程意外任务执行顺序

芹菜多工作进程意外任务执行顺序
EN

Stack Overflow用户
提问于 2017-05-02 21:30:39
回答 1查看 339关注 0票数 1

我运行芹菜:

代码语言:javascript
复制
celery multi start --app=myapp fast_worker 
       slow_worker
       -Q:fast_worker fast-queue      
       -Q:slow_worker slow-queue
       -c:fast_worker 1 -c:slow_worker 1
       --logfile=%n.log --pidfile=%n.pid

和celerybeat:

代码语言:javascript
复制
celery beat -A myapp

任务:

代码语言:javascript
复制
@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"

路由:

代码语言:javascript
复制
CELERY_ROUTES = {
    'myapp.tasks.test_log_task_queue': {
        'queue': 'slow-queue',
        'routing_key': 'slow-queue',
    },
}

我使用rabbitMQ。当我打开rabbitMQ管理面板时,我看到我的任务在slow-queue中,但当我打开日志时,我看到两个工作进程的任务输出。为什么两个工作进程都执行我的任务,即使任务不在工作队列中?

EN

回答 1

Stack Overflow用户

发布于 2017-05-04 19:01:29

看起来像是celery multi创建了类似共享队列的东西。为了解决这个问题,我添加了-X选项:

代码语言:javascript
复制
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
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43739202

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档