Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django会话在Redis实现后停止工作_Python_Django_Session_Redis - Fatal编程技术网

Python Django会话在Redis实现后停止工作

Python Django会话在Redis实现后停止工作,python,django,session,redis,Python,Django,Session,Redis,我已经用这个实现了redis,在这个会话之后必须存储在数据库的redis instaed中。配置后,当我重新启动应用程序时。我的会话出现错误 e、 g。, 比如说,在函数A中,我声明了一个会话,当我从浏览器中访问另一个链接并尝试在视图中获取同一个会话时,该会话不存在了。甚至不存在会话密钥。request.session.keys()为空 以下是我的redis配置: 缓存服务器设置 你知道我为什么会在django会话中遇到关键错误吗。看来你在启用缓存会话方面做得太多了。为什么你还使用,除了 让我们

我已经用这个实现了redis,在这个会话之后必须存储在数据库的redis instaed中。配置后,当我重新启动应用程序时。我的会话出现错误

e、 g。, 比如说,在函数
A
中,我声明了一个会话,当我从浏览器中访问另一个链接并尝试在视图中获取同一个会话时,该会话不存在了。甚至不存在会话密钥。request.session.keys()为空

以下是我的redis配置:

缓存服务器设置
你知道我为什么会在django会话中遇到关键错误吗。

看来你在启用缓存会话方面做得太多了。为什么你还使用,除了

让我们用一个最简单的配置来简化,这个配置对我来说很有用,只需使用。我在跟踪,并且:

就是这样,通过请求视图和检查
request.session
来测试它,或者,如果您:


由于会话不起作用而导致的问题是在设置文件中设置了以下设置,因为我将它们更改为False。所有内容似乎都在工作文件中。:
CSRF\u COOKIE\u SECURE=True SESSION\u COOKIE\u SECURE=True
不知道您更改了默认设置(即
False
);无论如何,我上面建议的解决方案(使用最小配置)仍然是正确的。如果您愿意,您可能会理解为什么这两个设置会干扰您的设置。
SECURE\u PROXY\u SSL\u HEADER
在实际服务器上启用,但在本地不起作用,因为https在本地不起作用,我从本地删除了安全设置,但忘记了会话和cookie设置。不管怎样,谢谢你告诉我他们为什么会发生冲突很高兴听到你的问题解决了!:)如果你认为我的回答对你没有帮助,请自己回答并标出答案
REDIS_PROT = "redis://"
REDIS_HOST = "127.0.0.1"
REDIS_PORT = 6379
REDIS_DB = 0

REDIS_CACHE_SERVER = REDIS_PROT + REDIS_HOST + ":" + str(REDIS_PORT) + "/" + str(REDIS_DB)
REDIS_CACHEALOT_SERVER = REDIS_PROT + REDIS_HOST + ":" + str(REDIS_PORT) + "/" + str(REDIS_DB + 3)

DJANGO_REDIS_IGNORE_EXCEPTIONS = True

CACHES = {
    "default": {
        "BACKEND": "django_redis.cache.RedisCache",
        "LOCATION": REDIS_CACHE_SERVER,
        "OPTIONS": {
            "PARSER_CLASS": "redis.connection.HiredisParser",
            "CLIENT_CLASS": "django_redis.client.DefaultClient",
            "COMPRESS_MIN_LEN": 10,
            "SOCKET_CONNECT_TIMEOUT": 5,  # in seconds
            "SOCKET_TIMEOUT": 5,  # in seconds
        }
    },
    "cachealot": {
        "BACKEND": "django_redis.cache.RedisCache",
        "LOCATION": REDIS_CACHEALOT_SERVER,
        "OPTIONS": {
            "PARSER_CLASS": "redis.connection.HiredisParser",
            "CLIENT_CLASS": "django_redis.client.DefaultClient",
            "COMPRESS_MIN_LEN": 10,
            "SOCKET_CONNECT_TIMEOUT": 5,  # in seconds
            "SOCKET_TIMEOUT": 5,  # in seconds
        }
    }
}

# CacheALot service settings 

CACHALOT_ENABLED = True
CACHALOT_CACHE   = 'cachealot'

# Django Redis Session App Configuration 

SESSION_REDIS_HOST = REDIS_HOST
SESSION_REDIS_PORT = REDIS_PORT
SESSION_REDIS_DB = REDIS_DB + 4
#SESSION_REDIS_PASSWORD = 'password'
SESSION_REDIS_PREFIX = 'session'

SESSION_ENGINE = 'redis_sessions.session'
# If you prefer domain socket connection, you can just add this line instead of SESSION_REDIS_HOST and SESSION_REDIS_PORT.
#SESSION_REDIS_UNIX_DOMAIN_SOCKET_PATH = '/var/run/redis/redis.sock'

# Celery Configurations
REDIS_CELERY_BROKER_SERVER =  REDIS_PROT + REDIS_HOST + ":" + str(REDIS_PORT) + "/" + str(REDIS_DB + 1)
REDIS_CELERY_RESULT_SERVER = REDIS_PROT + REDIS_HOST + ":" + str(REDIS_PORT) + "/" + str(REDIS_DB + 2)

BROKER_URL = REDIS_CELERY_BROKER_SERVER
CELERY_RESULT_BACKEND = REDIS_CELERY_RESULT_SERVER
CELERY_ALWAYS_EAGER=False
CACHES = {
    "default": {
        "BACKEND": "django_redis.cache.RedisCache",
        "LOCATION": "redis://127.0.0.1:6379/1",
        "OPTIONS": {
            "CLIENT_CLASS": "django_redis.client.DefaultClient",
        }
    }
}
SESSION_ENGINE = 'django.contrib.sessions.backends.cache'
>>> from django.contrib.sessions.backends.cache import SessionStore
>>> s = SessionStore(session_key='ff882814010ccbc3c870523934fee5a2')
>>> s.save()
>>> s.session_key
'ff882814010ccbc3c870523934fee5a2'
>>> s.session_data
'KGRwMQpTJ19hdXRoX3VzZXJfaWQnCnAyCkkxCnMuMTExY2ZjODI2Yj...'
>>> s.get_decoded()
{'user_id': 42}