本屌來回答下,一直比較喜歡用tornado,原因也很簡單,在很早期的版本上就支援異步了。
django早就用爛了,要說做個單人項目貌似還沒有更好的選擇了,然而django那些convention實在是太麻煩,另外db migration也感覺不好用,想要定制化還得仔細學習一下很麻煩。
flask更微型,好處更多,大部分功能可以自由的選型,不受限制,定制化更友善點,學習成本也更低。
不過這倆都不支援異步,是以也就是做個單體的後端渲染的東西。
tornado一直麻煩就麻煩在它的接口對使用者很不友好,不論比起flask還是django,都要麻煩很多,是以初期學習成本極高,在還有沒asyncio的時代,我還把它當一個協程庫用,比如做些事件驅動的程式設計。當然使用tornado你可以獲得極大的自由,和flask一樣,除了http相關的功能你都可以自由選型,定制化能力高。說到這裡分享一個以前對tornado的封裝,有興趣可以看看,其實隻要稍微加點代碼基本就可以像flask一樣同tornado。https://github.com/OldDriverPickMeUp/meeepo_apigithub.com
不過說老實話也挺久沒寫python了。
再說說後來的aiohttp,在aiohttp這個庫出現以後,其實再做api server的時候我就有點傾向于使用aiohttp,原因也很簡單,它的使用接口要比tornado簡單的多,也具有可以高度定制化的能力。所有tornado在貌似是5以後的版本就用asyncio的ioloop換掉了它原來的那個ioloop。
似乎到現在為止tornado似乎一直在向不好的方向發展。
提一點,tornado我認為比aiohttp強的設計在于它的多程序模式,這個模式下非常好擴充同時也好運維。至于aiohttp再生産模式下要更麻煩一些。
至于說django和flask,這倆做做私活可以,稍微要是做個産品,稍微拆幾個服務,有點使用者維護個一陣,這個不支援異步是有點蛋疼。
最後總結下,torando,aiohttp,flask定制化程度高,未來演化能力強,django即插即用,比較友善。flask,django同步。其中tornado最複雜,能實作的事情也最多。
結論就是,其實tornado不看也罷,畢竟有更簡單的aiohttp,而且我看招聘的時候提tornado的現在也少了不少。