Найти - Пользователи
Полная версия: Почему встроенные модули такое УГ?
Начало » Network » Почему встроенные модули такое УГ?
1 2 3 4 5 6 7
asilyator
reclosedev
Думал вы про HTTP, или про него тоже?
Это относится ко всем.

reclosedev
Кстати, тут: http://stackoverflow.com/questions/3386724/python-how-can-i-fetch-emails-via-pop-or-imap-through-a-proxy
наследуются от IMAP4 и переопределив один метод получают SocksIMAP4.
Видел. Предлагают два решения: одно - совсем УГ (перезапись глобальной переменной), второе - чуть менее (наследование, но имена переменных - приватные, хоть они так и не обозначены, что если их переименуют или поменяют логику?). Решение с передачей по цепочке файлобьекта свободно от каких-либо сторонних эффектов.

reclosedev
С логированием непонятно. Получается будет весь сетевой обмен в лог попадать?
Это как логгер решит. Можно одни заголовки.
slav0nic
asilyator
какие ещё приватные переменные? Какую логику поменяют? socksipy уже с 2007 года не обновляется.
решил на новую тему потроллить?

пиши в python-dev, там тебя с радостью послушают и примут твои новаторские мега идеи В)
asilyator
Slavonic, прочел бы топик до конца, в чем именно изменяются переменные. И речь шла о том, что решение не без побочных эффектов.

Могу выслать мазь против бугурта, или не читай топики, где критикуется что-то в питоне - тебе вредно.


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

Попробуйте Grab: http://grablib.org
asilyator
А как сделать в грабе несколько запросов в тредпуле?
lorien
Примерно так:

    from grab import Grab
    from grab.tools.work import make_work
    def worker(url):
        g = Grab()
        g.go(url)
        return url, g
    urls = ['http://yandex.ru'] * 100
    for requested_url, g in make_work(worker, urls, 10):
        print requested_url, g.response.body

Пишу по памяти, может что забыл. Проверки ошибок в примере нету. Не обязательно юзать grab make_work просто в его комплекте идёт.
asilyator
А лимиты на сайт и вообще есть?
lorien
> А лимиты на сайт и вообще есть?
не понял
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