无法从 Django Gunicorn 应用程序中的代码读取队列长度,但在控制台中工作正常

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

以下 get_queue_length 代码将队列长度始终设置为零,但是当我在 Django shell 中运行同一组命令时,它工作正常并给出队列中的对象总数

import os
import redis
from urllib.parse import urlparse
from celery.result import AsyncResult
from django.utils import timezone
from celery import states

broker_url = os.getenv('CELERY_BROKER_URL')

# Parse the broker URL
parsed_url = urlparse(broker_url)

# Extract the connection parameters
redis_host = parsed_url.hostname
redis_port = parsed_url.port
redis_db = int(parsed_url.path.lstrip('/'))

# Configure the Redis client
redis_client = redis.StrictRedis(host=redis_host, port=redis_port, db=redis_db)


def get_queue_length(queue_name):
   # Redis key for the queue
   redis_key = f"{queue_name}"
   return redis_client.llen(redis_key)

此问题的原因可能是什么?我是不是错过了什么?

celery django-celery celery-task
1个回答
0
投票

所以事实证明 redis_key = f"{queue_name}" 没有被很好地应用! 当我硬编码 redis_key = f"{'queue-name'}" 时,它工作得很好,但仍然不知道为什么这样

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