来自env settings issue或django_rq问题的Django字典?

时间:2017-06-22 06:15:52

标签: django django-settings django-rq

尝试从环境变量动态创建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。

0 个答案:

没有答案