Celery:了解节点和current_app.control.inspect()。stats()

问题描述 投票:0回答:1

Celery通过其Inspect界面提供了一些可爱的统计信息。但这还没有特别有据可查的文件。这是我们所拥有的:

https://docs.celeryproject.org/en/stable/reference/celery.app.control.html#celery.app.control.Inspect.stats

https://docs.celeryproject.org/en/stable/userguide/workers.html#worker-statistics

我爱我能看到的东西:

stats = current_app.control.inspect().stats()

但是结构有点神秘。上面已经有很多文档,但是明显地not这个返回的dict的最高层是什么。这是我所看到的一个示例:

{
    <node id>: {
        'total': {
            <task name>: 1
        },
        'pid': 1233,
        'clock': '467',
        'pool': {
            'max-concurrency': 8,
            'processes': [1235, 1236, 1237, 1238, 1239, 1240, 1241, 1242],
            'max-tasks-per-child': 'N/A',
            'put-guarded-by-semaphore': False,
            'timeouts': [0, 0],
            'writes': {
                'total': 1,
                'avg': '100.00%',
                'all': '100.00%',
                'raw': '1',
                'strategy': 'fair',
                'inqueues': {
                    'total': 8,
                    'active': 0
                }
            }
        },
        'broker': {
            'hostname': '127.0.0.1',
            'userid': <user id>,
            'virtual_host': <virtual host name>,
            'port': 5672,
            'insist': False,
            'ssl': False,
            'transport': 'amqp',
            'connect_timeout': 4,
            'transport_options': {},
            'login_method': 'AMQPLAIN',
            'uri_prefix': None,
            'heartbeat': 120.0,
            'failover_strategy': 'round-robin',
            'alternates': []
        },
        'prefetch_count': 32,
        'rusage': {
            'utime': 1.271573,
            'stime': 0.171316,
            'maxrss': 59800,
            'ixrss': 0,
            'idrss': 0,
            'isrss': 0,
            'minflt': 60288,
            'majflt': 0,
            'nswap': 0,
            'inblock': 0,
            'oublock': 0,
            'msgsnd': 0,
            'msgrcv': 0,
            'nsignals': 0,
            'nvcsw': 632,
            'nivcsw': 54
        }
    }
}

在这种结构下,我很困惑。

我目前正在调试模式下运行,并且我只使用以下一项作为工作人员:

$ celery worker -A my_app -l INFO

而且我看到上面的这样一个条目。如果我启动第二个工作程序(在同一台计算机上的另一个终端中,使用相同的命令),则直到直到仅在卫星中看到一个节点为止。

我可以看到相同的节点ID,如下所示:

$ celery -A Library status
<node id>: OK

1 node online.

该节点ID采用'celery @ myhostname'的形式。

我是否有一名或两名工人正在运行,这告诉我我有一个在线节点。

示例pstree:

$ pstree -lp 7813
gnome-terminal-(7813)─┬─bash(4319)───[celeryd: celer(9896)─┬─[celeryd: celer(9900)
                      │                                    ├─[celeryd: celer(9901)
                      │                                    ├─[celeryd: celer(9902)
                      │                                    ├─[celeryd: celer(9903)
                      │                                    ├─[celeryd: celer(9904)
                      │                                    ├─[celeryd: celer(9905)
                      │                                    ├─[celeryd: celer(9906)
                      │                                    └─[celeryd: celer(9910)
                      ├─bash(4404)───pstree(10229)
                      └─bash(7820)───[celeryd: celer(9995)─┬─[celeryd: celer(9997)
                                                           ├─[celeryd: celer(9998)
                                                           ├─[celeryd: celer(9999)
                                                           ├─[celeryd: celer(10000)
                                                           ├─[celeryd: celer(10001)
                                                           ├─[celeryd: celer(10002)
                                                           ├─[celeryd: celer(10003)
                                                           └─[celeryd: celer(10004)

在这里,我可以清楚地看到两个工人及其集合过程。但是它们是一个节点(毫不奇怪)。

所以让我感到困惑的是:

  1. 完全是一个节点?
  2. 具有多个1是什么意思?
  3. 我如何获得超过1?
  4. 我如何以编程方式获取节点名称(在Python中不是在命令行上?)>

Celery通过其Inspect界面提供了一些可爱的统计信息。但这还没有特别有据可查的文件。这就是我们拥有的:https://docs.celeryproject.org/en/stable/reference/celery.app ....

python bash celery
1个回答
0
投票

关于进一步的阅读和研究,我认为我可以在这里回答我自己的问题。

© www.soinside.com 2019 - 2024. All rights reserved.