【问题标题】:How do you confirm django is using memcached?你如何确认 django 正在使用 memcached?
【发布时间】:2015-06-24 18:45:05
【问题描述】:

我有一个 python django 网络服务器,我正在尝试使用 memcached 使其更快。

我已经下载并安装了 memcached 并启动了一个名为 virtual 的用户,如下所示:

/usr/local/bin/memcached -u virtual & 

在 django setting.py 中,我将 memcached 服务器设置为:

MEMCACHE_HOSTS = ['192.168.101.1:11211']

我可以远程登录 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)

从命令行:

phthon

from django.core.management import execute_from_command_line

当我这样做时:

from django.core.cache import cache

我收到以下错误:

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__
    self._setup(name)
  File "/usr/local/lib64/python2.6/site-packages/django/conf/__init__.py", line 47, in _setup
    % (desc, ENVIRONMENT_VARIABLE))
django.core.exceptions.ImproperlyConfigured: Requested setting CACHES, but settings are not configured. You must either define the environment variable DJANGO_SETTINGS_MODULE or call settings.configure() before accessing settings.

【问题讨论】:

    标签: django memcached


    【解决方案1】:

    您可以在 Django 的 shell (python manage.py shell) 中测试缓存:

    >>> from django.core.cache import cache
    >>> cache.set('foo', 'bar', 600)
    >>> cache.get('foo')
    'bar'
    

    如果cache.get() 返回设置值,则表示缓存正在正常工作。否则它将返回None

    另一个选项是使用$ memcached -vv 启动memcached,因为它将记录所有对终端的缓存访问。或者,您也可以为 memcached 安装监控工具(即memcache-top),并在使用您的应用时检查 memcached 中是否发生了某些事情。

    【讨论】:

    • Blenkus,当我执行 python manage.py shell 时,出现一堆错误: ImportError: Could not import settings 'settings' (它在 sys.path 上吗?设置中是否存在导入错误文件?):没有名为graphite.app_settings的模块
    • 看起来 Django 找不到设置文件。您的项目根目录中有settings.py 文件吗?否则,您必须正确设置DJANGO_SETTINGS_MODULE(在manage.py 文件中)。通常它类似于&lt;your_project.settings&gt;
    • 然后勾选此项在设置文件中配置memcached:docs.djangoproject.com/en/1.8/topics/cache/…
    • Blenkus,我安装了 python-memcached,在 settings.py 中,我包含了这些行: if MEMCACHE_HOSTS: CACHES['default'] = { 'BACKEND': 'django.core.cache.backends. memcached.MemcachedCache', 'LOCATION': MEMCACHE_HOSTS, 'TIMEOUT': DEFAULT_CACHE_DURATION, 'KEY_PREFIX': MEMCACHE_KEY_PREFIX, } 在 local_settings 中,我加入了以下几行: MEMCACHE_HOSTS = ['51.16.48.94:11211'] MEMCACHE_KEY_PREFIX = 'graphite' F = 1500 FIND_TOLERANCE = 2 * FIND_CACHE_DURATION DEFAULT_CACHE_DURATION = 1500,当我回收 apache 时,我得到 server 500 err.
    • "如果这有效,则表示缓存正在正常工作。否则会抛出错误。" ...get 总是为我返回None,并且没有错误。
    猜你喜欢
    • 2021-01-26
    • 2013-01-16
    • 2010-09-17
    • 1970-01-01
    • 2016-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-18
    相关资源
    最近更新 更多