LINUX.ORG.RU

Python + HTTP: httplib, urllib, requests.


0

1

Когда-то юзал httplib - понравилась возможность контролировать почти всё, в частности порядок HTTP headers, возможность закосить под любой браузер во всех его особенностях. Но приходилось делать свою обрабатывалку печенья и формо-отправлялку. Ну, велосипед изобретён, он работает, админы меня от браузера отличить не могут, всё хорошо.

Потом стало любопытно, как с «полным контролем» у других популярных либ?

Вот например модный requests позволяет написать собственный формирователь boundary-строки для «multipart/form-data» например? Определить порядок заголовков? Гарантировать отсутствие лишних?

«другие» - это простые обертки над httplib'ом, у которого кстати есть одна большая засада - он с сокетами работает в синхронном режиме. я уже наступал на грабли, когда сайт «обещал» дать Х байт, а дал Х-n, в резултате приложение тупо залипло на системном вызове. Взял gdb, приаттачился к процессу и посмотрел бектрейс - колом стояло на recv.

Deleted
()
Ответ на: комментарий от Deleted

1) Тогда requests тем же инфицирован?
2) А по набору возможностей httplib - самая крутая? То есть, я крутой чувак, что её юзаю?

kiverattes ★☆
() автор топика
Последнее исправление: kiverattes (всего исправлений: 2)
Ответ на: комментарий от kiverattes

А по набору возможностей httplib - самая крутая?

из батареек да, т.е. самая низкоуровневая

mashina ★★★★★
()
Ответ на: комментарий от Deleted

есть одна большая засада - он с сокетами работает в синхронном режиме... залипло на системном вызове... колом стояло на recv

У конструктора HTTPConnection() есть параметр timeout, который переводит сокет в неблокирующий режим и включает таймауты, в частности, и для recv()

mashina ★★★★★
()
Ответ на: комментарий от mashina

ой, а я и не заглядывал вглубь requests, есть ли у него там доступ к httplib'ному окружению. надо будет позже проверить. хотя есть подозрение, обычно такие обертки абстрагируют и упрощают, т.е. доступ к уровню http там врят ли имеется. ну это лишь предположение. как будет нужда еще раз, копну исходник глубже.

Deleted
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.