Уведомления

Группа в Telegram: @pythonsu

#1 Март 5, 2009 12:35:42

presidentua
От:
Зарегистрирован: 2009-03-05
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Проблема c pyCurl

Столкнулся с одной задачей, над которой даже помучившись много времени не смог решить. Может подскажете в чем траблы.
Есть какой-то цикл например 10 раз, и каждый раз нужно сделать всего лишь один запрос. Как бы все элементарно:

data = StringIO.StringIO()
curl = pycurl.Curl()
curl.setopt(pycurl.POST,1)
curl.setopt(pycurl.WRITEFUNCTION,data.write)
curl.setopt(pycurl.USERPWD,name+':'+password)
curl.setopt(pycurl.CONNECTTIMEOUT,5)
curl.setopt(pycurl.FOLLOWLOCATION,0)
curl.setopt(pycurl.URL,'http://google.com/')
curl.perform()
curl.close()
Но почему то иногда происходит зависания на curl.perform(), тоесть где-то 1 запрос выполняются, а 1 нет. В случае зависания нажимаю в Ctrl+Z и все дальше работает. Поидее КУРЛ ждет или ответа от сервера или еще что-то и при этом игнорирует curl.setopt(pycurl.CONNECTTIMEOUT,5). А почему игнориреет не известно.
Мне в принципе ответ от сервера даже и не нужен, но поскольку я не нашел параметра в курле чтобы не принимать параметры - то приходится принимать.

Решения не через прямые ручки как бы придумал - типа запускать запрос как поток, а потом в конце приложения обрывать все потоки. Но это ж как-то дико использовать.

Может кто-то сталкивался с такой проблемой?



Офлайн

#2 Март 5, 2009 18:09:07

shiza
От:
Зарегистрирован: 2007-07-03
Сообщения: 1073
Репутация: +  0  -
Профиль   Отправить e-mail  

Проблема c pyCurl

curl.setopt(pycurl.CONNECTTIMEOUT,5) - это таймаут только соединения
может поможет добавить еще:
curl.setopt(pycurl.TIMEOUT, 20)



Офлайн

#3 Март 5, 2009 20:33:03

presidentua
От:
Зарегистрирован: 2009-03-05
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Проблема c pyCurl

эврика )
Трабла была в одной особености кУрла. Мне запрос нужно передавать методом Пост, но при этом никаких полей не нужно передавать. А так нельзя! и кУрл от этого вис. Когда добави одно левое Пост-поле для передачи, то все отлично заработало.



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version