另一个 stackoverflow答案说您需要设置一个 elasticache.config 文件来自动使用 ElastiCache 创建 Redis 服务器。
但是,我可以在 AWS (Elasticache) 上创建一个 Redis 实例并将其端点添加到 Django 设置中吗?例如,使用Django-redis:
CACHES = {
"default": {
"BACKEND": "django_redis.cache.RedisCache",
"LOCATION": "redis://<REDIS AWS ENDPOINT AND PORT HERE>",
"OPTIONS": {
"CLIENT_CLASS": "django_redis.client.DefaultClient",
}
}
}
Run Code Online (Sandbox Code Playgroud)
我怀疑上述内容可能会导致多个 beanstalk 服务器实例出现问题。鉴于此,我倾向于使用 MemCache 而不是 Redis,因为有一个明确编写的 Django 包用于与 AWS Elasticache for Memcache 交互:django-elasticache。
谢谢,安迪。
django amazon-web-services redis amazon-elasticache amazon-elastic-beanstalk
我在Celery. 受此启发 - http://ask.github.io/celery/cookbook/tasks.html#ensuring-a-task-is-only-executed-one-at-a-time我决定使用 memcache 添加锁我的任务。
这些是我所做的更改:
python-memcached
# settings for memcache
CACHES = {
'default': {
'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
'LOCATION': '127.0.0.1:11211',
}
}
Run Code Online (Sandbox Code Playgroud)
在此之后,我登录到我的 shell 并执行以下操作
>>> import os
>>> import django
>>> from django.core.cache import cache
>>> os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'proj.settings.base')
>>> cache
<django.core.cache.DefaultCacheProxy object at 0x101e4c860>
>>> cache.set('my_key', 'hello, world!', 30) #display nothing. No T/F
>>> cache.get('my_key') #Display nothing.
>>> from django.core.cache import caches
>>> caches['default']
<django.core.cache.backends.memcached.MemcachedCache object at 0x1048a5208>
>>> caches['default'].set('my_key', 'hello, world!', 30) #display nothing. …Run Code Online (Sandbox Code Playgroud) 我有一个python django webserver,我试图使用memcached来加快速度.
我已经下载并安装了memcached并启动了一个名为virtual的用户,如下所示:
/usr/local/bin/memcached -u virtual &
Run Code Online (Sandbox Code Playgroud)
在django setting.py上,我把memcached服务器放在这个:
MEMCACHE_HOSTS = ['192.168.101.1:11211']
Run Code Online (Sandbox Code Playgroud)
我可以telnet 192.168.101.1 11211和统计数据,我确实看到一些统计数据等.
我怎么知道我的django服务器是否使用了memcached?是否有我可以查看的目录或一些要确认的文件?
感谢您的任何见解.
manage.py的内容:
#!/usr/bin/env python
import os
import sys
from django.core.management import execute_from_command_line
if __name__ == "__main__":
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "settings")
from django.core.management import execute_from_command_line
execute_from_command_line(sys.argv)
Run Code Online (Sandbox Code Playgroud)
从命令行:
phthon
from django.core.management import execute_from_command_line
Run Code Online (Sandbox Code Playgroud)
当我这样做时:
from django.core.cache import cache
Run Code Online (Sandbox Code Playgroud)
我收到这些错误:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/lib64/python2.6/site-packages/django/core/cache/__init__.py", line 69, in <module>
if DEFAULT_CACHE_ALIAS not in settings.CACHES:
File "/usr/local/lib64/python2.6/site-packages/django/conf/__init__.py", line 54, in __getattr__ …Run Code Online (Sandbox Code Playgroud)