關於Gevent的使用指北

關於Gevent的使用指北

只是看了入門指南,和一個翻譯文檔。寫一下我的讀書心得。git

其實看完以後,第一個反映就是asyncio這個系統庫,感受gevent如今所作的一些事情是與asyncio很像的,可是他本身有一個很是可怕的黑科技,就是monkey補丁。github

使用gevent的過程能夠簡單地歸納爲,將一個任務(函數)放到gevent.spawn()中,將它變成Greenlets類,這一步我的感受是與asyncio中,將一個函數變成future類或者task類是一個做用,而後就阻塞到所有註冊的任務完成。在這個過程當中,這些任務會同時執行,也就是併發。而後gevent也是提供了各類相似threading的接口,和數據結構。數據結構

至於黑科技monkey,就是直接替換了系統庫,將系統庫變成支持協程的,好處就是,只要導入這個,整個程序就支持協程了,不過最大的問題就是,這是個黑箱操做,在調試方面多是個噩夢。併發

而我爲何要用gevent呢,由於我要用gunicorn,一開始我覺得gunicorn的異步模式會很麻煩,要改不少東西,而後我就發現,只須要在gunicorn的配置文件中,打上monkey補丁,而後工人類型設爲gevent,就能夠了,沒錯,就是這麼簡單暴力。異步

相關文章
相關標籤/搜索