Посты с тэгом curl


Http запросы — мы все это делаем неправильно

В проекте, над которым я работаю, мы используем огромное количество сторонних библиотек. Многие из них — адаптеры для различных сервисов. Что их объединяет, это то, что они работают с сетью. Json поверх http, soap поверх http, какие-то свои протоколы поверх http. Т.е. все так или иначе используют http. И как ни удивительно, мало кто из них пользуется преимуществами его последней версии. Я не поленился заглянуть в википедию, прошло ровно 14 лет как была принята спецификация http 1.1. И потому я решил обратиться с призывом:


Да, речь пойдет о keep alive. Суть в том, что, начиная с http 1.1, клиент и сервер могут договориться не закрывать установленное tcp-соединение после завершения запроса, а переиспользовать его для следующих запросов. Это нужно потому, что на установку соединения требуется время. Иногда это время больше, чем время самого запроса. И если все серверы уже давным-давно такую возможность под



Собираем pycurl под windows (python 2.7).

Наверняка сейчас под windows pycurl у всех стоит вот с этого сайта , к сожалению, в этой версии есть такой неприятный баг, который неизвестно при каких условиях проявляется. Таким образом, необходимо собрать версию поновее, ибо больше сайтов со сборками pycurl я не видел.

Всё делал вот по этой статье http://curl.haxx.se/mail/curlpython-2009-11/0010.html за исключением небольшого ньюанса с ассемблером.

Для работы необходимо установить:

1) Visual Studio C++ Express (я ставил 2008).

2) Perl (я качал вот этот http://www.activestate.com/activeperl/downloads)

3) Ассемблер Nasm, а также добавить путь до bin в переменную path (брать отсюда http://www.nasm.us/)

Чтобы собра



Python / Grab — python библиотека для парсинга сайтов

Лет пять-шесть назад, когда я ещё программировал преимущественно на PHP, я начал использовать библиотеку curl для парсинга сайтов. Мне нужен был инструмент, который позволял эмулировать сессию пользователя на сайте, отсылать заголовки обычного браузера, давать удобный способ отсылки POST-запросов. Сначала я пытался использовать напрямую curl-расширение, но его интерфейс оказался очень неудобным и я написал обёртку с более простым интерфейсом. Время шло, я пересел на python и столкнулся с таким же дубовым API curl-расширения. Пришлось переписать обёртку на python.



swap мыслей или обо всём понемногу

Давно ничего не писал, нарушаю молчание. Очень трудно начать писать заметку, вроде есть о чём сказать, но начать писать трудно. Ну, ладно сразу о главном. Продолжаю поддерживать проект pylibcurl исправил баги, которые возникали в 64 битной версии ОС Ubuntu на тестах программа просто падала, выдавая в конце неприятную ошибку "Segmentation fault". А происходило это из-за того, что было неправильное обращение к указателю. В 32-битной ОС можно было обращаться к указателю таким образом:


curl_easy_init.restype = ctypes.c_void_p
и всё происходило без ошибок, а 64-битной версии данная конструкция не прокатывала, а нужно делать так:

curl_easy_init.restype = ctypes.POINTER(ctypes.c_void_p)

для меня это первая библиотека в которой задействован ctypes. Ну ничего, главное опыт и понять как это всё работает. В планах написать больше тестов и документацию