2013-06-28 2 views
3

Некоторое время назад я написал код, взаимодействующий с внешней службы для моего проекта Django:GEvent ломает запросы/urllib2 таймаута

try: 
     response = requests.get('some host', timeout=TIMEOUT) 
    except: 
     log.warning('timeout') 
     return None 

Я проверил это в моем разви envierment (python manage.py runserver) и таймаутов работают отлично. Тогда я решил исправить это с GEvent путем указания реализации пула для gunicorn, например, так:

python manage.py run_gunicorn -k gevent 

И теперь get вызов не прерывается timout исключением. Я изменил реализацию пула на eventlet и она работает, как ожидалось:

python manage.py run_gunicorn -k eventlet 

Есть ли способ исправить GEvent?

+3

попытайтесь обновить gevent до его версии github. 'socket.setdefaulttimeout (TIMEOUT)' должен работать. – jfs

ответ

3

Я нашел решение here. Эта ошибка исправлена ​​в версии 1.0dev, вы можете установить его с GitHub:

pip install cython 
pip install git+https://github.com/surfly/gevent.git 

@ J-F-Себастьяне, спасибо за подсказку!