Найти - Пользователи
Полная версия: Почему встроенные модули такое УГ?
Начало » Network » Почему встроенные модули такое УГ?
1 2 3 4 5 6 7
asilyator
Вроде бы питон - друг системного администратора, и сетевые средства должны быть искаропки, но они больше напоминают китайский швейцарский нож, который вроде бы как настоящий, но половина - из латуни и ломается при первой попытке это использовать.

Ни один модуль не работает с проксями или позволяет их прикрутить без грубого нарушения правил архитектуры (манкипатчинга).

http модули:
  • Низкоуровневые. Работу с куками и сессии приходится прикручивать сбоку. Вызовы хрен запомнишь.
  • Обертки. Есть гораздо более удобный requests, но он базируется на httplib и тоже с проксями не дружит. Есть несколько приемлемых высокоуровневых модулей, но они разные и не включены в стандартную библиотеку. Т.е. перед тем как просто написать код, надо написать его со встроенной библиотекой (которых аж 3 штуки - а нафига?), блевануть, пойти искать библиотеки, попробовать пару самописных оберток, упереться в их границы, плюнуть на них, лазить по малочисленным постам на эту тему, скачать пару библиотек, перепробовать их все, натыкаясь на грабли и в конце концов выбрать себе что-то более-менее работающее. И это всего лишь для того, чтобы написать простую последовательность запросов с сессией так, чтобы свой код не вызывал отвращения. А как же “there is only one way to do it”?
  • Запустить запросы в тредпуле через прокси одним вызовом - это ниибатсо хайлевел.
  • httplib не умеет проверять сертификаты - а нахрена тогда ssl вообще сдался?

poplib/imaplib не питонические, какой-то полусишный обгрызок с многоуровневой структурой данных, которую хрен запомнишь и кодами возврата вместо ислючений. По удобству ненамного ушли от прямой работы с сокетом.

Почему бы не принимать файлобьект вместо адреса? Тогда можно было бы и прокси подключить без лишнего геморроя, и логгинг запросов сделать (для чего иначе нужны не очень удобные внешние средства, а в случае с ssl задача вообще нетривиальная).
Soteric
Так в любом языке, по-моему. Сторонние библиотеки и появляются только потому, что не устраивают встроенные средства языка. И это нормально. “Есть единственный способ сделать что-то” думаю не об этой проблеме. Enjoy :)
reclosedev
Во-первых, многое из сказанного не соответствует действительности.
Во-вторых, к чему вообще этот вброс? Не нравится, используйте сторонние модули. Если и они не устраивают - напишите свое, а в идеале хорошо задокументируйте и выложите для всех.

Стандартная библиотека писалась давно, и так просто, из-за всех хотелок, каждый месяц ее не пообновляешь (как requests, например).
PooH
reclosedev
Во-первых, многое из сказанного не соответствует действительности.

Не подкармливай его.
asilyator
reclosedev
Во-первых, многое из сказанного не соответствует действительности.
Что именно? Поправлю - прокси в http относилось к socks и http connect.

reclosedev
Во-вторых, к чему вообще этот вброс?
БАБАХ!

reclosedev
Если и они не устраивают - напишите свое, а в идеале хорошо задокументируйте и выложите для всех.
А как же “there is only one way to do it”? И почему я должен обязательно что-то пилить и потом этим с кем-то делиться?

От того, что каждый варит свой супчик, получается, что есть куча модулей, которые надо попробовать и в процессе выяснить, что один не поддерживает прокси, во втором нет чего-то очевидного. Комьюнити распыляет усилия. Если консолидировать усилия, можно было бы получить что-то стандартное и удобное.

Soteric
Так в любом языке, по-моему. Сторонние библиотеки и появляются только потому, что не устраивают встроенные средства языка. И это нормально. “Есть единственный способ сделать что-то” думаю не об этой проблеме. Enjoy :)
… your aids?
Хорошо, но почему http библиотек аж 3, и все УГ?

reclosedev
Стандартная библиотека писалась давно, и так просто, из-за всех хотелок, каждый месяц ее не пообновляешь (как requests, например).
И она с тех пор не обновлялась?
reclosedev
asilyator
И почему я должен обязательно что-то пилить и потом этим с кем-то делиться?
this
asilyator
Если консолидировать усилия, можно было бы получить что-то стандартное и удобное.
asilyator
reclosedev
this
this - это когда, например, обьединят requests с grab и добавят туда тредпул. И какое я имею к этому отношение?

Короче советов кроме как “сделать все самому и подарить другим” у тебя нет?

Почему на вопросы о продуктах майкрософт никто не отвечает “найди решение и отправь его в майкрософт”?
reclosedev
Ясно.

asilyator
Почему бы не принимать файлобьект вместо адреса? Тогда можно было бы и прокси подключить без лишнего геморроя, и логгинг запросов сделать
А подробнее или код?
asilyator
fo = Socks.connect(host, port)
fo = logger_wrap(fo)
imap = imap.IMAP(fileobj=fo)
reclosedev
Думал вы про HTTP, или про него тоже?
С IMAP ясно, соединились и шлем запросы.
Кстати, тут: http://stackoverflow.com/questions/3386724/python-how-can-i-fetch-emails-via-pop-or-imap-through-a-proxy
наследуются от IMAP4 и переопределив один метод получают SocksIMAP4.

С логированием непонятно. Получается будет весь сетевой обмен в лог попадать?
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB