Flask是一個微型的 Python 開發的 Web 框架,應用性強,是我在項目過程中調研到的一種交互性強,穩定性高的Python與C#的交互方式。
之前介紹過 “ C#調用Python的使用總結 ”,總體上使用沒什么大問題,但是在應用上實在是算不上比較智能的交互。他們倆之間(C#和Python)之間的溝通方式,打個比方就像是早期寄快遞。我(C#)在 寄快遞(發命令),把想要寄的東西打包后寄出去(通過Process引用對應的python文件和輸入參數),然后就沒然后了。我需要自己(C#)頻繁的去打電話查詢快遞到哪了(異步獲取訂閱事件,獲取輸出流進行分析),快遞有沒有出事(是否輸出異常信息),這些都是得我去查(C#開線程去跟蹤輸出流信息)。不夠智能,整體使用非常不靈活,Python並不能夠直接的傳輸,關聯到C#應用層。你可以設想一下,如果C#應用程序出現問題或者異常關閉,Python這邊其實是不影響的,這個就很不安全了。你可以想象,快遞一出概不受理的感覺,寄出去就討不回來的結果。同理來說Python那邊也是一樣,雙方的關系其實只有最開始的寄快遞的時候的交接,后續客戶只能希望送快遞的人靠譜。這個就很迷了,在之前沒找到更好的方法我也只能認了。
隨后的應用測試中,發現關閉Python對應腳本也是很不方便,只能直接關斷對應的Python程序運行。程序簡單還好說,程序復雜起來就影響很大了。畢竟測試穩定性和安全性都得不到很好的保證,這個就是個大問題了,所以就只能找其他方式解決了。
在調研的情況下接觸到FLask。了解其創立的背景和使用方式,建立服務器的方法是一種很好的思路應用,通過一系列的嘗試測試,驚喜的發現其能夠完美解決上面提到的問題。
主要也就是通過Flask建立服務器,還是用寄快遞為例。服務器就相當於快遞公司,你通過給快遞公司寄快遞(C#給FLask服務器發命令),快遞公司會根據快遞類型(路由)進行路徑選擇(執行方法),派人去送往目的地(執行命令)。在整個送快遞的過程,快遞公司是一直在線的,你的快遞沒送完這個訂單就不算完成,除非他返回給你結果(寄送成功或者寄送失敗)。C#不需要開另外的線程去跟蹤結果,只需要發一條命令一步到位。Python腳本和C#前端程序沒有直接的對接,他們之間相當於多了一個中轉站,中轉站會對兩邊的數據都進行抓取,不論發送還是接收都是實時的。
有興趣的朋友可以先去看看Flask用戶指南,對於簡單的建立C#和Python的交互不需要涉及它太復雜的原理和應用。下面的鏈接是調用 擒賊先擒王 這位大佬的博客里的鏈接。
From:http://docs.jinkan.org/docs/flask/quickstart.html
Flask 用戶指南:http://docs.jinkan.org/docs/flask/index.html
w3cschool.cn 的 Flask 教程:https://www.w3cschool.cn/flask/
《Flask Web開發:基於Python的Web應用開發實戰》第2版中文PDF,324頁,帶書簽目錄,文字能夠復制粘貼;配套源代碼;
下載: https://pan.baidu.com/s/1qhCaPeX41vltmeI-XFVLIA 提取碼: v9w5
Flask大型教程項目:http://www.pythondoc.com/flask-mega-tutorial/index.html#
后續會更新一到兩篇進行介紹其使用方法和相關代碼。
