Форум сайта python.su
lorienНет, я не думаю, что Вам это было ясно. Вы просто чюрка.
Т.е. вы считаете, что я вас козлом обозвал и продолжаете общаться? У вас, видимо, склонность к мазохизму.
lorienНа нее всем плевать, кроме тех, которые решат закоммитить код - а это процентов так 99%. Не хотите помогать? Ну так перестаньте темы поднимать. Че ж Вы тут сидите?
Другим плевать на мою культуру? А с какой стати я тогда должен им помогать?
Офлайн
Ну почему не светит, одного претендента на черенкование уже нашел.
Отредактировано odnochlen (Июнь 29, 2012 23:32:50)
Офлайн
Нет, искал я другое, просто тут наткнулся на одного. Я не любитель, но если уж такое чудо выползло, грех отказаться. Оно ж не успокоится, пока ему очко не почешут.
Офлайн
К слову об “у..бищном” pycurl: есть pylibcurl, питоник, очень приятный в использовании, читабельный etc, но на тестах на 30% медленнее pycurl.
Вопрос производительности транспорта запросов актуален и терять эту производительность ради того чтобы зависимости были питоник - глупость. Будто без этого узких мест мало.
А pycurl в полне адекватен сишной природе curl, если вы понимаете о чем я… ^_^
Офлайн
alexey-gromЧто значит медленнее? Больше проц грузит? Я сомневаюсь, что где-то что-то упрется именно в транспорт, а не парсер. Или качает медленнее?
К слову об “у..бищном” pycurl: есть pylibcurl, питоник, очень приятный в использовании, читабельный etc, но на тестах на 30% медленнее pycurl.
Отредактировано odnochlen (Июнь 30, 2012 10:28:43)
Офлайн
pycurl прост и туп, как и сам curl.
curl & pycurl умеют скачивать ответ сервера в файл. Мне известны два способа: своя callback функция (которая может еще например решать куда лучше сохранять: в память или временный файл) и curl.setopt(pycurl.WRITEDATA, open('filename', ‘wb’) (тут пример http://pycurl.cvs.sourceforge.net/viewvc/pycurl/pycurl/examples/retriever.py?content-type=text%2Fplain). Grab не умеет на данный момент скачивать в файл, но если оперативы на сервере много - это не проблема. Если такую фичу допиливать, то нужно принимать ряд важных конструктивных решений, которые лучше делать автору.
Постить файлы pycurl тоже умеет (это которые post-запросы с multipart) и через имя файла который curl сам будет открывать и читать, и через собсна контент который можно передать напрямую curl. И content-type даже передаст и boundary сам придумает. Оба способа умеет grab. Тут уже показывали как.
А если речь шла про put-запросы, то тут вообще сложностей нет.
Я думаю, важно понимать, что протокол http полностью реализован библиотекой curl - она очень старая, проверенная и надежная. Кроме того, еще и быстрая. И если есть какая-то задача, то найдется решение как её выполнить с помощью curl. Важно понимать как работает http-протокол и как пользоваться curl.
Офлайн
alexey-gromИнтересно, не напомнишь?
и через собсна контент который можно передать напрямую curl. И content-type даже передаст и boundary сам придумает. Оба способа умеет grab. Тут уже показывали как.
alexey-gromЭто напрямую зависит от того, что качать. А если файл на пару гиг?
Grab не умеет на данный момент скачивать в файл, но если оперативы на сервере много - это не проблема.
Офлайн
odnochlenТогда лучше получать список url и качать более подходящим средством, например wget. И это всё простейшим скриптом с блэкджеком и шлюхами.
Это напрямую зависит от того, что качать. А если файл на пару гиг?
odnochlenВ основном конечно get и post, но пичалька была если бы put понадобился, а его нет, потому что кто-то думает что плевать на полноценность реализации протокола в клиенте.
PUT где-то вообще работает и применяется?
odnochlenА вы бы повежлевее общались с людьми, может кто и показал бы ^_^
Решение с курлом теоретически может и возможно, да вот никто мне его показать не может. + как я уже написал, все ли опции curl доступны в pycurl?
c = pycurl.Curl() c.setopt(c.URL, base_url + 'upload.cgi') c.setopt(c.HTTPPOST,[ ("fieldname1", "value1"), ("fieldname2", "value2"), ("uploadfieldname", (c.FORM_FILE, local_filename, c.FORM_CONTENTTYPE, "application/x-gzip")) ])
Офлайн
alexey-gromНо зачем?
Тогда лучше получать список url и качать более подходящим средством, например wget. И это всё простейшим скриптом с блэкджеком и шлюхами.
alexey-gromМне это не нужно, это уже есть в грабе. Мне нужен пост файла из памяти.
А вы бы повежлевее общались с людьми, может кто и показал бы ^_^
alexey-gromОтлично. Тыц. Скажешь мне, как там настроить передачу функции чтения файла через pycurl? Где в pycurl аналог этого?
А к вопросу все ли опции доступны в pycurl, то думаю, там вероятно конвертер какой-то используется который *.h сишной либы с константами преобразует в *.py, когда биндинг готовят. Что-то такое скорее всего.
В принципе, тут важно понимать, что API очень простое у curl и целиком построено на использовании пары функций и передачи им параметров в виде указателей и констант. Так что даже если когда то и встретиться какая-то экзотика которой нет в биндинге, её даже допиливать не нужно - просто посмотреть код нужного параметра в доках и вызвать setopt, к примеру.
Отредактировано odnochlen (Июль 1, 2012 05:01:03)
Офлайн
odnochlenНу и в чем проблема? Вместо c.FORM_FILE, нужно использовать c.FORM_CONTENTS. В граб это тоже есть: https://bitbucket.org/lorien/grab/src/953299d16194/grab/upload.py
Мне это не нужно, это уже есть в грабе. Мне нужен пост файла из памяти.
odnochlenВам уже говорили что нужно конвертировать в однобайтовую кодировку.
А еще pycurl в имени файла не берет юникод.
odnochlenхз зачем, поднимался такой вопрос - я его осветил :)
Но зачем?
odnochlenБлеать, какой еще функции чтения файла? Чтобы стримить поток или что? Зачем вообще такой странный подход? Есть _правильный_ способ постить файлы (в том числе большие) при котором всем занимается сам curl.
Скажешь мне, как там настроить передачу функции чтения файла через pycurl?
odnochlenВы либо не пытаетесь разобраться, либо мозги ебете :D
Где в pycurl аналог этого?
c.setopt(c.HTTPPOST,[ ("fieldname1", "value1"), ("uploadfieldname", (c.FORM_FILE, local_filename, c.FORM_CONTENTTYPE, "application/x-gzip", и дальше так же остальные нужные параметры)), (и для других полей) ])
Отредактировано alexey-grom (Июль 1, 2012 05:37:38)
Офлайн