以下 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)
此问题的原因可能是什么?我是不是错过了什么?
所以事实证明 redis_key = f"{queue_name}" 没有被很好地应用! 当我硬编码 redis_key = f"{'queue-name'}" 时,它工作得很好,但仍然不知道为什么这样