【问题标题】:Unable to Inspect Celery无法检查芹菜
【发布时间】:2014-05-05 18:01:55
【问题描述】:

我目前遇到一个使用 Celery 的项目的问题。当将任务路由到队列并且任务数量超过并发时,工作人员会脱机。在这种状态下,它仍在处理任务,但工作人员似乎离线并且无法检查。 ping 工人或检查 active_queues 会给出消息“错误:在时间限制内没有节点回复”。 Worker 的任务数等于或小于 Worker 的并发数后,Worker 才会重新上线。

使用 '-l debug' 运行 worker 并没有显示任何错误,因为 worker 离线了。尽管无法对其进行检查,但该工作人员似乎处于脱机状态时,日志仍在继续。

Celery 版本为 3.1.11,代理为 RabbitMQ 3.3.0。

我的 Celery 配置:

from celery.schedules import crontab
from kombu import Exchange, Queue

CELERY_DEFAULT_QUEUE = 'default'
CELERY_QUEUES = (
    Queue('manager_tasks',
          exchange=Exchange('manager', type='direct'),
          routing_key='manager.#'),
    Queue('high_priority_tasks',
          exchange=Exchange('high', type='direct'),
          routing_key='high.#'),
    Queue('low_priority_tasks',
          exchange=Exchange('low', type='direct'),
          routing_key='low.#'),
)

CELERY_DEFAULT_EXCHANGE = 'tasks'
CELERY_DEFAULT_EXCHANGE_TYPE = 'topic'
CELERY_DEFAULT_ROUTING_KEY = 'task.default'

BROKER_URL = 'amqp://[user]:[password]@[url]:[port]/[vhost]'

CELERY_RESULT_BACKEND = 'djcelery.backends.database:DatabaseBackend'

CELERYBEAT_SCHEDULE = {
    'scan-hosts': {
        'task': 'myapp.task',
        'schedule': crontab(minute='*/1',
                            hour='8-17',
                            day_of_week='mon-fri'),
        'options': {
            'queue': 'manager_tasks',
            'routing_key': 'manager.#'
        },
    },
}

CELERY_TASK_RESULT_EXPIRES = 18000  # 5 hours

CELERY_ACCEPT_CONTENT = ['json']
CELERY_TASK_SERIALIZER = 'json'
CELERY_RESULT_SERIALIZER = 'json'

【问题讨论】:

    标签: celery


    【解决方案1】:

    根据我在此发现的情况,工作人员似乎离线,以表明它已满且无法预取任何更多任务。一旦它能够接收更多任务,它就会恢复,一旦满足并发和预取限制,它就会回到“离线”状态。

    【讨论】:

      猜你喜欢
      • 2019-12-29
      • 1970-01-01
      • 2022-01-06
      • 2016-03-22
      • 1970-01-01
      • 1970-01-01
      • 2021-07-24
      • 1970-01-01
      • 2018-12-10
      相关资源
      最近更新 更多