Мы запускаем две копии приложения на основе django в экземпляре Apache. У нас есть этот код Python при загрузке объекта из базы данных:
id = pymongo.objectid.ObjectId(hex_string)
d = self.collection.find_one({ '_id': id })
assert id == d['_id']
В одном из двух приложений (в зависимости от того, какое из них мы нажмем вторым) утверждение завершается ошибкой. Мы посмотрели на идентификаторы, и они одинаковы. Плюс, когда мы изменим его на:
assert str(id) == str(d['_id'])
Утверждение проходит. На наших машинах для разработки (64-разрядная версия Win 7, сервер разработки django вместо Apache) это работает нормально.
Стек: Ubuntu 10.04 LTS, Apache 2.2.14, Python 2.6.5, MongoDB 2.0, Pymongo 2.0.1
Обновление: мы столкнулись с еще одной подобной проблемой. Фактически мы начали ссылаться на объекты как на идентификаторы объектов BSON, и это решило вторую проблему. Однако проблема в этом вопросе все еще возникает, даже при использовании идентификаторов объектов BSON.
error_log(помимоDeprecationWarning, которые мы исправляем, это:TemplateDoesNotExist: 500.html- person JJO   schedule 23.09.2011ObjectId('47283de8cf9cc30d000000')Плюс точно такой же код работает на другом приложении. Я отредактирую вопрос, чтобы прояснить этот смешанный фактор. - person JJO   schedule 23.09.2011