All articles, tagged with ”ссылки”

Библиотека для sape - рефакторинг

Так получилось, что я в очередной раз переписал библиотеку для работы с биржей ссылок sape.ru. В течение нескольких месяцев я пользовался библиотекой linkexchange, про которую уже писал раньше. Плюсы linkexchange — автор оперативно фиксит глюки. Минусы — глюки есть, за время использования я наткнулся на три штуки, о которых прямо или косвенно были посланы багрепорты. Свои глюки роднее — я решил вернуться к использованию самописаного модуля, первую версию которого я разработал ещё год или два назад. Как всегда переписал всё с нуля. Гавное отличие новой версии библиотеки от прежних — я отказался от обновления локальной базы ссылок прямо в коде сайта при обработке чьего-либо запроса. Ноги этого подхода растут из PHP-библиотеки, в которой такой подход оправдан т.к. позволяет использовать библиотеку большому количеству веб-мастеров, даже тем, кто не знает что такое cron и с чем его едят. В моём же случае мне наплевать на людей, которые не умеют использовать cron, поэтому я разделил библиотеку на две части: client и provider. Provider умеет обращаться к серверу sape.ru, забирать оттуда дамп базы данных, парсить его и сохранять локально в формате эффективном для быстрой выборки данных. А client это оочень маленький код, который просто умеет по данному ключу делать выборку данных, по сути, можно обойтись и вовсе без клиента т.к. всё равно всё сводится к вызову функции sape.provider.Provider::read_database_key. Таким образом теперь глюки sape.ru сервера не влияют на работу сайта т.к. базу обновляется скриптом, вызываемым по крону. Другое новшество библиотеки — я храню локально ссылки в DBM-базе, с которой работаю через модуль anydbm. Все говорят, что этот dbm — быстрая штука, если честно, я ещё не проверял :D Но должно быстрее быть старого подхода, когда я каждый раз считывал в память сохранённый дамп, десерилизовывал его с помощью библиотеки phpserialize и только затем уже искал нужный ключ.

Подробности о том, как использовать библиотеку в Django и неDjango проектах, читайте в README

Сорцы как всегда на битбакете. А ещё я научился оформлять distutils-пакеты и регистрировать их на PyPI. Так что либу можно ставить также через easy_install и pip. Обо всех глюках просьба писать на мыло.

Клиент для брокера ссылок mainlink.ru

На днях сделал клиент для работы с сайтом mainlink.ru (аналог sape.ru). Пока фунциональность очень простая (нет кеширования). Работает, как для морд, так и для внутренних страниц.