【发布时间】:2013-04-12 01:36:29
【问题描述】:
我有 4 个 EC2 服务器运行带有 uWSGI 的 Django 1.3.2 应用程序。他们都在 Amazon RDS 上共享一个 MySQL 服务器。我遇到了一些行为,如果通过管理员创建新对象并尝试:
get_object_or_404(Class, pk=new_object.pk)
有时它会找到一个对象,但有时它会返回 404。
会发生什么?
这就是我使用 get_object_or_404 的方式:
# Module level variables
if settings.DEBUG:
articles = News.objects.filter(status='live')
else:
articles = News.objects.all()
dev view(request, slug):
article = get_object_or_404(articles, slug=slug)
....
如果我重新启动所有 uWSGI 进程,问题就会消失。
我尝试过的问题和事情:
- 是模块级变量的问题吗?我试过调试这个,但由于查询集很懒,这似乎不是问题。
- 是缓存问题吗?我重新启动了 memcache 并清除了 Nginx 的缓存,但问题仍然存在。
- 是 RDS 问题吗?我还没有找到答案。
- 是查询集缓存问题吗?我还没有找到答案,也不知道怎么解决。
在单个服务器上一切正常,但一旦有多个服务器,我就会开始体验这种行为。
【问题讨论】:
标签: mysql django amazon-ec2 django-queryset rds