如何在Django的MemcachedCache后端使用Elasticache

时间:2015-03-31 18:40:48

标签: django memcached amazon-elasticache django-cache

在Django的MemcachedCache后端使用Amazon的Elasticache服务(使用Memcached引擎)的正确方法是什么?

我有一个本地运行的本地Memcached服务,它可以在Django设置下正常工作:

CACHES = {
    'default': {
        'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
        'LOCATION': '127.0.0.1:11211',
    }
}

我认为使用Elasticache就像创建Memcached集群实例一样简单,然后将我的设置更改为:

CACHES = {
    'default': {
        'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
        'LOCATION': 'instance-name.abcdef.cfg.use1.cache.amazonaws.com:11211',
    }
}

但是,当我在本地测试时,缓存会无声地失败,并且无法成功存储任何内容。

我做错了什么?如何让MemcachedCache后端显示真实的错误消息?我是否需要使用特定于Elasticache的Django后端,如this

1 个答案:

答案 0 :(得分:3)

您无法从AWS网络外部连接到ElastiCache实例。即使您的安全组可能有例外情况允许来自您的IP地址(或整个互联网)的流量,AWS的网络也不会接受任何不是来自其网络内的流量。

此配置没问题,但只能在EC2实例中使用。

或者你可以按照this guide(这也证实了我上面的答案),这基本上涉及你启动一个EC2实例,你将在你的CACHES配置中使用你的IP地址。此实例配置为在端口11211上的传入流量之间执行NAT并将其转发到ElastiCache节点。这种配置远非理想,但不应该在生产中使用。