尝试从环境变量动态创建 Django_rq 队列配置时,我遇到了一种奇怪的行为。
我的环境变量是:
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(':')}
我期待 denerated 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 行,在 execute_from_command_line(sys.argv) 文件“/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(subcommand).run_from_argv(self.argv) 文件“/home/work/virtualenv/runaway_dev/lib/python3.6/site-packages/django/core/management/base .py”,第 348 行,在 run_from_argv self.execute(*args, **cmd_options) 文件“/home/work/virtualenv/runaway_dev/lib/python3.6/site-packages/django/core/management/base.py ”,第 399 行,在执行输出 = self.handle(*args, **options) 文件“/home/work/virtualenv/runaway_dev/lib/python3.6/site-packages/django_rq/management/commands/rqworker.py ",第 79 行,在处理队列 = get_queues(*args) 文件中 "/home/work/virtualenv/runaway_dev/lib/python3.6/site-packages/django_rq/queues.py",第 166 行,在 get_queues queue_params = QUEUES [queue_names[0]] KeyError:'默认'
顺便说一句:如果我使用上面的静态配置,它工作得很好,所以我的嫌疑人更关注 Django_rq 而不是创建队列,但也许我也在 Django 的设置上做了一些不正确的事情。
任何帮助将非常感激。谢谢。
F。