尝试从环境变量动态创建Django_rq队列配置时,我遇到了一种奇怪的行为。
我的env var是:
CUSTOM_QUEUES=default:q1:q2
进入我的settings.py我有:
from getenv import env
# Cache
CACHES_DEFAULT = "redis://127.0.0.1:6379/1"
CACHES = {
"default": {
"BACKEND": "django_redis.cache.RedisCache",
"LOCATION": env("CACHE_URL", CACHES_DEFAULT),
"OPTIONS": {
"CLIENT_CLASS": "django_redis.client.DefaultClient",
},
'TIMEOUT': 3600
},
}
RQ_QUEUES_REDIS = {'USE_REDIS_CACHE': 'default'}
RQ_QUEUES = {k:RQ_QUEUES_REDIS for k in env('CUSTOM_QUEUES', "default").split(':')}
我期待已经过时的RQ_QUEUES dict就像这个正在运作的那个:
RQ_QUEUES = {
'default': {
'USE_REDIS_CACHE': 'default',
},
'q1': {
'USE_REDIS_CACHE': 'default',
},
'q2': {
'USE_REDIS_CACHE': 'default',
},
}
即使配置似乎运行良好,我可以看到来自django_rq网页的队列,我的工作人员无法连接并实际抛出此错误,就像redis中没有队列密钥
回溯(最近一次呼叫最后一次):文件" manage.py",第10行,in execute_from_command_line(sys.argv)File" /home/work/virtualenv/runaway_dev/lib/python3.6/site-packages/django/core/management/ init .py", 第350行,在execute_from_command_line中 utility.execute()文件" /home/work/virtualenv/runaway_dev/lib/python3.6/site-packages/django/core/management/ init .py", 第342行,执行中 self.fetch_command(子命令).run_from_argv(self.argv)File" /home/work/virtualenv/runaway_dev/lib/python3.6/site-packages/django/core/management/base.py", 第348行,在run_from_argv中 self.execute(* args,** cmd_options)File" /home/work/virtualenv/runaway_dev/lib/python3.6/site-packages/django/core/management/base.py", 第399行,执行中 output = self.handle(* args,** options)File" /home/work/virtualenv/runaway_dev/lib/python3.6/site-packages/django_rq/management/commands/rqworker.py", 第79行,处理中 queues = get_queues(* args)File" /home/work/virtualenv/runaway_dev/lib/python3.6/site-packages/django_rq/queues.py", 第166行,在get_queues中 queue_params = QUEUES [queue_names [0]] KeyError:'默认'
By The Way:如果我使用上面的静态配置它运行良好,所以我的嫌疑人更专注于Django_rq而不是创建队列,但也许我也在Django的设置上做了一些不合适的事情。
任何帮助都会非常感激。感谢。
F。