stats()
方法是Celery inspect
模块中的一个方法,用于收集和返回关于Celery worker的各种统计信息。这些统计信息可以帮助你了解worker的当前状态和性能指标。stats()
返回的结果是一个字典,其中键是worker的名字,值是一个包含多个统计指标的字典。
stats()
方法返回的内容
stats()
方法返回的内容通常包括但不限于以下信息:
-
worker的状态:
pid
:worker进程的ID。freq
:心跳频率(每秒发送的心跳次数)。alive
:worker是否存活(布尔值)。load平均值
:系统负载平均值,通常包括1分钟、5分钟和15分钟的负载平均值。sw_ident
:worker使用的软件标识。sw_ver
:worker使用的软件版本。sw_sys
:worker所在的系统信息。
-
任务处理状态:
total
:处理过的总任务数。processed
:处理过的任务数。scheduled
:预定的任务数。active
:正在执行的任务数。reserved
:预留的任务数。revoked
:被撤销的任务数。consumer
:消费者状态信息。
-
队列信息:
queues
:队列信息,包括队列名称和队列中的消息数量。active_queues
:活动队列的信息。
-
配置信息:
conf
:worker的配置信息。pool
:工作池的信息,包括最大并发数等。
-
其他统计信息:
clock
:worker上的时钟。tasks
:任务相关信息。events
:事件相关信息。
示例输出
下面是一个stats()
方法返回的示例输出:
{
'celery@worker1': {
'pid': 12345,
'freq': 1.0,
'loadavg': [0.9, 0.8, 0.7],
'sw_ident': 'celery',
'sw_ver': '5.2.2',
'sw_sys': 'Linux-5.4.0-106-generic-x86_64-with-glibc2.29',
'total': 100,
'processed': 100,
'scheduled': 0,
'active': 1,
'reserved': 0,
'revoked': 0,
'consumer': {
'active_queues': [{'name': 'default', 'exchange': 'default', 'bindings': ['*']}],
'qos': {'prefetch_count': 1, 'prefetch_size': 0, 'global': False},
'concurrency': 4,
'deliveries': {'total': 100, 'get': 100, 'put': 0},
'tasks': {'total': 100, 'received': 100, 'acked': 100, 'rejected': 0},
'processes': {'max': 4, 'active': 4, 'idle': 0, 'exhausted': 0},
'events': {'processed': 100, 'rejected': 0, 'revoked': 0, 'failed': 0},
'pool': {'max-concurrency': 4, 'max-tasks-per-child': None, 'max-memory-per-child': None},
'queues': {'default': {'bindings': ['*'], 'exchange': 'default', 'name': 'default', 'messages': 0}},
'tasks-by-type': {'task_type_1': 50, 'task_type_2': 50}
},
'clock': 1642321200.0,
'events': {'enabled': True, 'last_enabled': 1642321200.0, 'last_disabled': 0.0},
'conf': {
'broker_url': 'amqp://guest:guest@localhost:5672//',
'task_serializer': 'json',
'result_serializer': 'json',
'accept_content': ['json'],
'timezone': 'UTC',
'enable_utc': True,
'task_track_started': True,
'task_ignore_result': False,
'task_send_sent_event': True,
'task_acks_late': True,
'worker_hijack_root_logger': False,
'worker_redirect_stdouts_level': 'INFO',
'worker_redirect_stdouts': True,
'worker_send_task_events': True,
'worker_cancel_long_running_tasks_on_shutdown': False,
'worker_prefetch_multiplier': 1,
'worker_max_tasks_per_child': None,
'worker_max_memory_per_child': None,
'worker_send_task_sent_event': True,
'worker_state_db': None,
'worker_log_color': True,
'worker_log_format': '%(levelname)s: %(message)s',
'worker_task_log_format': '%(levelname)s: tasks.%(__name__)s[%( delivery_tag)09d]: %(message)s',
'worker_loglevel': 'INFO',
'worker_send_task_error_emails': False,
'worker_send_task_success_emails': False,
'worker_send_task_failure_emails': False,
'worker_send_task_retry_emails': False,
'worker_send_task_retry_policy': {'interval_start': 0, 'interval_step': 0.2, 'interval_max': 0.2, 'max_retries': None},
'worker_send_task_retry_interval': 0.2,
'worker_send_task_retry_max_retries': None,
'worker_send_task_retry_interval_max': 0.2,
'worker_send_task_retry_interval_start': 0,
'worker_send_task_retry_interval_step': 0.2,
'worker_send_task_retry_interval_jitter': 0,
'worker_send_task_retry_backoff': False,
'worker_send_task_retry_backoff_max': 0,
'worker_send_task_retry_backoff_jitter': 0,
'worker_send_task_retry_backoff_max_jitter': 0,
'worker_send_task_retry_backoff_factor': 1,
'worker_send_task_retry_backoff_max_factor': 1,
'worker_send_task_retry_backoff_jitter_factor': 1,
'worker_send_task_retry_backoff_max_jitter_factor': 1,
'worker_send_task_retry_backoff_jitter_max': 0,
'worker_send_task_retry_backoff_max_jitter_max': 0,
'worker_send_task_retry_backoff_jitter_min': 0,
'worker_send_task_retry_backoff_max_jitter_min': 0,
'worker_send_task_retry_backoff_jitter': False,
'worker_send_task_retry_backoff_max_jitter': False,
'worker_send_task_retry_backoff_jitter_factor': 1,
'worker_send_task_retry_backoff_max_jitter_factor': 1,
'worker_send_task_retry_backoff_jitter_max': 0,
'worker_send_task_retry_backoff_max_jitter_max': 0,
'worker_send_task_retry_backoff_jitter_min': 0,
'worker_send_task_retry_backoff_max_jitter_min': 0,
'worker_send_task_retry_backoff_jitter': False,
'worker_send_task_retry_backoff_max_jitter': False,
'worker_send_task_retry_backoff_jitter_factor': 1,
'worker_send_task_retry_backoff_max_jitter_factor': 1,
'worker_send_task_retry_backoff_jitter_max': 0,
'worker_send_task_retry_backoff_max_jitter_max': 0,
'worker_send_task_retry_backoff_jitter_min': 0,
'worker_send_task_retry_backoff_max_jitter_min': 0,
'worker_send_task_retry_backoff_jitter': False,