2

我对网络开发很陌生。我正在开发托管在亚马逊 ec2 服务器上的网站。该站点使用 django 框架在 python 中。我正在使用 memcached 来缓存一些客户端信息。我的站点和缓存可以在本地机器上运行,但不能在 EC2 服务器上运行。我检查了 memcached 服务器,发现它无法设置密钥。我可能需要在 settings.py 中更改某些内容,以便在服务器上正确设置密钥或我可能缺少的其他内容。

编辑:发现问题。我添加了一个新的中间件,用于在内存缓存中设置键。那没有被调用。它在本地机器上完美运行。在服务器上,我使用 gunicorn 作为应用服务器,使用 nginx 作为反向代理。这些中的任何一个都可能导致问题。我也尝试重新加载 nginx,但这也无济于事。

4

3 回答 3

2

It was a silly glitch. I found out that i needed to reload gunicorn server to make the new middleware work. Thanks everybody for the help.

于 2012-12-03T19:53:07.320 回答
0

首先,您需要在设置中设置缓存CACHES,考虑到访问缓存服务器所需的所有凭据:https ://docs.djangoproject.com/en/dev/topics/cache/#memcached

还要确保可以从您尝试使用的实例访问缓存服务器。

当谈到使用新的中间件(一个稍微不同的问题)时,然后:

  • 确保它在设置中正确定义(不会被其他设置覆盖,例如常用local_settings.py文件,这应该根据您使用的环境而有所不同),
  • 确保正确定义中间件类(定义例如process_request(),如果您想为传入的请求做某事),
  • 如果您正在使用例如。使用 Apache 的 mod_wsgi,请记住重新加载服务(在本例中为 Apache),例如。调用sudo service apache2 reload(如上述情况),
于 2012-12-01T17:03:29.093 回答
0

是否将其添加到您的 settings.py 中?

MIDDLEWARE_CLASSES = (
    'django.middleware.common.CommonMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.cache.UpdateCacheMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.cache.FetchFromCacheMiddleware',
)

文档

只有当您说“添加了新的中间件”时,我不太清楚您的意思是什么步骤。

于 2012-12-01T15:29:59.470 回答