Комментарии 11
интересная функция, однако я бы на Вашем месте выделил бы куски кода в функции, а то тройные вложенные циклы это круто :) сложно понять. простота кода — залог успеха :)
+1
Большая часть тела функции — это модифицированный пример использования pycurl.CurlMulti, который, к сожалению, правильно не работал.
На самом деле, в саму функцию лезть особо не надо будет, практически все, что нужно для типичных задач покрывают параметры, передаваемые ей.
На самом деле, в саму функцию лезть особо не надо будет, практически все, что нужно для типичных задач покрывают параметры, передаваемые ей.
0
А двойные вложенные циклы — ну так pycurl устроен, вот чтобы не вспоминать каждый раз как это делать — я и сделал себе multi_get.
0
> К сожалению, Хабр убивает whitespace (indentation), без которого код на python не будет работать…
Можно использовать тэг <pre>
Можно использовать тэг <pre>
0
А можно использовать source code highlighter
0
c.setopt(pycurl.NOSIGNAL, 1) — это зачем?
def removewww(a) — может лучше регуляркой, а то домен может быть examplewww.com
def removewww(a) — может лучше регуляркой, а то домен может быть examplewww.com
0
Только я сразу подумал что это отличная штука для DOS-а кого либо?
:)
:)
0
Всем привет.
Спасибо автору за информацию про c-ares и некоторые пояснения по скрипту.
Поскольку сюда будут заходить интересующиеся, позволю себе упростить им жизнь. В свободное от работы время, я иногда пишу обертку над pycurl, которая упрощает API работы с pycurl. Стараюсь максимально приблизиться к python-request.
Думаю никто не будет спорить, что разобраться во всех принципах работы pycurl задача не очень простая, особенно в асинхронном модуле.
Библиотека human_curl доступна на гитхабе.
Вот пример использования асинхронного модуля human_curl:
Обработку данных можно реализовать через систему колбэков.
Спасибо автору за информацию про c-ares и некоторые пояснения по скрипту.
Поскольку сюда будут заходить интересующиеся, позволю себе упростить им жизнь. В свободное от работы время, я иногда пишу обертку над pycurl, которая упрощает API работы с pycurl. Стараюсь максимально приблизиться к python-request.
Думаю никто не будет спорить, что разобраться во всех принципах работы pycurl задача не очень простая, особенно в асинхронном модуле.
Библиотека human_curl доступна на гитхабе.
Вот пример использования асинхронного модуля human_curl:
from urlparse import urljoin
from datetime import datetime
from human_curl.async import AsyncClient
from human_curl.utils import stdout_debug
def success_callback(response, **kwargs):
"""This function call when response successed
"""
print("success callback")
print(response, response.request)
print(kwargs)
def fail_callback(request, opener, **kwargs):
"""Collect errors
"""
print("fail callback")
print(request, opener)
print(kwargs)
with AsyncClient(success_callback=success_callback,
fail_callback=fail_callback) as async_client:
for x in xrange(10000):
async_client.get('http://google.com/', params=(("x", str(x)),)
async_client.get('http://google.com/', params=(("x", str(x)),),
success_callback=success_callback, fail_callback=fail_callback)
Обработку данных можно реализовать через систему колбэков.
0
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
multi_get — качаем сайты оптом