Посты с тэгом грабли


Почему не все так просто с MongoDB


В последнее несколько лет MongoDB приобрела огромную популярность среди разработчиков. То и дело в интернете появляются всякие статьи как очередной молодой популярный проект выкинул на свалку истории привычные РСУБД, взял в качестве основной базы данных MongoDB, выстроил инфраструктуру вокруг неё, и как все после этого стало прекрасно. Даже появляются новые фреймворки и библиотеки, которые строят свою архитектуру целиком на Mongo (Meteor.js например).

По долгу работы я примерно 3 года занимаюсь разработкой и поддержкой нескольких проектов, которые используют MongoDB в качестве основной БД, и в этой статье хочу рассказать, почему на мой взгляд с MongoDB далеко не все так просто, как написано в мануалах, и к чему вы должны быть готовы, если вдруг решите взять MongoDB в качестве основной БД в ваш новый модный стартап :-)

Все что описано


Python sax парсинг, осторожно грабли!

Столкнулся с такой проблемой использую SAX парсер для парсинга XHTML файла и прикаждом вызове функции xml.sax.parse скрипт подвисает на несколько секунд. В начале думал что файл слишком тяжёлый для парсинга, посмотрел загрузку процессора, процессор не грузится! Забил, через несколько дней сижу с вырубленым интернетом, запускаю скрипт и вот тут выскакивает ошибка мол время соединения истекло т.е. таймаут!!! И ошибка указывает на строку 298


f = urllib.urlopen(source.getSystemId())
модуля saxutils. Вот тут я выпал в осадок :))))

Оказалось что в XHTML файле есть доктип:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">


и каждый раз при парсинге скрипт рубится в интернет!!!
Погуглив, решения не нашёл как это дело закешировать, не стал рефакторить фукцию prepare_input_source,