У меня есть 4 сервера EC2 с приложением Django 1.3.2 с uWSGI. Все они используют сервер MySQL на Amazon RDS. Я испытываю некоторое поведение, где, если новые объекты создаются через администратор, и я стараюсь:Задания Django в распределенном приложении
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? Я не нашел ответа на это.
- Проблема с кэшем запросов? Я не нашел ответа на этот вопрос и не знаю, как это сделать.
Все работает так, как ожидается, на одном сервере, но, как только у вас будет несколько серверов, я начну испытывать поведение.