【问题标题】:Celery - Programmatically list workersCelery - 以编程方式列出工人
【发布时间】:2013-01-03 15:41:42
【问题描述】:

如何使用 Python 代码以编程方式列出当前工作人员及其对应的 celery.worker.consumer.Consumer 实例?

【问题讨论】:

    标签: python celery


    【解决方案1】:

    您可以使用celery.control.inspect 来检查正在运行的工人:

    >>> import celery
    >>> celery.current_app.control.inspect().ping()
     {u'celery@host': {u'ok': u'pong'}}
    

    【讨论】:

    • 不错,有了这个我可以构建一个 REST API,询问工作人员是否已启动或是否崩溃并通知用户
    • 有超时选项吗?
    【解决方案2】:

    简答:

    your_celery_app.control.inspect().stats().keys()

    一般来说,stats() 字典提供了很多信息。这是一个示例值:

    {u'broker': {u'alternates': [],
                 u'connect_timeout': 4,
                 u'heartbeat': 0,
                 u'hostname': u'mypcisdabom',
                 u'insist': False,
                 u'login_method': u'AMQPLAIN',
                 u'port': 5672,
                 u'ssl': False,
                 u'transport': u'amqp',
                 u'transport_options': {},
                 u'uri_prefix': None,
                 u'userid': u'celeryabuser',
                 u'virtual_host': u'celeryvhost'},
     u'clock': u'182309',
     u'pid': 1660,
     u'pool': {u'max-concurrency': 1,
               u'max-tasks-per-child': u'N/A',
               u'processes': [2496],
               u'put-guarded-by-semaphore': True,
               u'timeouts': [0, 0],
               u'writes': u'N/A'},
     u'prefetch_count': 4,
     u'rusage': u'N/A',
     u'total': {u'mymodule.my_func': 8}},
    

    【讨论】:

      【解决方案3】:

      如果你会在启动时添加--events 键。您可以查看此模块以检查当前工作人员等。http://docs.celeryproject.org/en/latest/userguide/monitoring.html

      【讨论】:

        猜你喜欢
        • 2014-08-01
        • 2016-07-15
        • 2016-02-26
        • 1970-01-01
        • 2016-12-26
        • 1970-01-01
        • 1970-01-01
        • 2015-06-28
        • 1970-01-01
        相关资源
        最近更新 更多