Найти - Пользователи
Полная версия: Проблема c pyCurl
Начало » Network » Проблема c pyCurl
1
presidentua
Столкнулся с одной задачей, над которой даже помучившись много времени не смог решить. Может подскажете в чем траблы.
Есть какой-то цикл например 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). А почему игнориреет не известно.
Мне в принципе ответ от сервера даже и не нужен, но поскольку я не нашел параметра в курле чтобы не принимать параметры - то приходится принимать.

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

Может кто-то сталкивался с такой проблемой?
shiza
curl.setopt(pycurl.CONNECTTIMEOUT,5) - это таймаут только соединения
может поможет добавить еще:
curl.setopt(pycurl.TIMEOUT, 20)
presidentua
эврика )
Трабла была в одной особености кУрла. Мне запрос нужно передавать методом Пост, но при этом никаких полей не нужно передавать. А так нельзя! и кУрл от этого вис. Когда добави одно левое Пост-поле для передачи, то все отлично заработало.
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