Некоторое время назад я написал код, взаимодействующий с внешней службы для моего проекта 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?
попытайтесь обновить gevent до его версии github. 'socket.setdefaulttimeout (TIMEOUT)' должен работать. – jfs