2013-06-28 85 views
3

前一段時間我寫的代碼,與國外服務交互爲我的Django項目:GEVENT打破請求/ urllib2的超時

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

我在devel的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-塞巴斯蒂安,謝謝你的提示!