如何用python開發移動App(android、iOS)後台?需要掌握哪些技術?
本人會移動開發,略知後台開發,不過一般公司都採用java 或者 c開發後台,我想使用python開發移動後台,返回json數據給移動app,我需要怎麼做?
1、如果使用python語言,需要學習哪些知識?2、選擇什麼樣的python框架開發,這個框架的優勢?3、如何部署伺服器?本地伺服器調試,以及公網伺服器部署?4、如果使用python框架開發移動後台服務,在開發源碼內使用哪種框架?mvc還是其它的,比如我返回json數據,每次json對象最外層有一些相同的東西,該如何處理?5、python的後台服務最大能支持多大的pv量會嚴重影響用戶體驗性能?
6、如何兼顧 網頁前端以及移動端 開發的後台?7、有沒用相關的案例,即用python開發的移動後台?有沒有該問題的開源項目?
1、如果使用python語言,需要學習哪些知識?
python作為一門簡單明了的語言,非常容易上手,語言層面不會太複雜,稍微有點難度的頂多就是裝飾器、元類和少量函數式編程內容。要說學習的話,我覺得更多是一些編程方面通用的東西,比如:數據結構和演算法、設計模式、操作系統、計算機網路之類的2、選擇什麼樣的python框架開發,這個框架的優勢?
tornado,因為非阻塞io的原因,性能非常高,特別適合寫後端API(App的後端應該都是rest風格的api),而且成熟穩定3、如何部署伺服器?本地伺服器調試,以及公網伺服器部署?
這個一兩句說不清楚,涉及到運維、測試、開發諸多方面, 部署和測試推薦幾個包:fabric、nose、unittest(python自帶),版本管理推薦git,持續集成推薦使用docker+jenkins4、如果使用python框架開發移動後台服務,在開發源碼內使用哪種框架?mvc還是其它的,比如我返回json數據,每次json對象最外層有一些相同的東西,該如何處理?
MVC什麼的,一般的框架都差不多的,tornado也是支持的,返回json有相同的東西,寫個修飾器就完了
5、python的後台服務最大能支持多大的pv量會嚴重影響用戶體驗性能?
youtube、reddit、豆瓣、知乎這樣的大流量網站都是python寫的,我覺得你的App的規模不太可能遇到性能問題,即使有也應該不是python的問題,而是任何語言都會有問題。畢竟web後端不是計算密集型,而是io密集型的,python和其他語言的區別不會太大吧,大量的pv是可以靠堆伺服器堆出來的,如果是計算量比較大的任務,你可以考慮用c或c++寫6、如何兼顧 網頁前端以及移動端 開發的後台?
用python寫的API,網頁和移動端都是可以調用啊,讓前端學學React,就可以輕鬆解決前後端分離這個問題(PS: facebook 就是後端php + 前端React,淘寶也有在用nodejs做前後端分離)7、有沒用相關的案例,即用python開發的移動後台?有沒有該問題的開源項目?
這個應該比較少,App後端開源的不常見,而且大部分是rest風格的api,很多時候會涉及到自身的業務和敏感信息應該不會開源的吧(又不是bbs或者博客程序)-------------------------------------------------------------------------------------
關於python學習推薦Full Stack Python ,可以看看這個:Python 有哪些好的學習資料或者博客? - 彭泉鑫的回答大家回答的都比較高大上,但是我覺得題主這會需要的是儘快入門,之後才好考慮那些複雜的問題。我的回答會偏向如何快速入門。
lz會寫代碼只是對服務端這一套還不熟,那麼現在需要的不是儘快的入服務端開發這個門,在這時候,不需要任何性能相關的,pv uv多少影響性能這種問題不是一個單純的數字就可以解決的,性能調優本身就是一個非常複雜極度依賴經驗的活兒,現在先不用管,等你入了門,應用到了那個瓶頸,自然會知道的,現在,不用管。選python,你就成功了一半,個人感覺在小型後台上,python甩java8條街,上手快開發效率高,小項目的不二之選(大的就是java甩Python了...)列一個小項目的通用技能點:語言:Pythonweb service:apahce/nginx框架:flask/Django資料庫:mysql伺服器:阿里雲逐個回答一下題主的困惑:1、如果使用python語言,需要學習哪些知識?
現階段需要熟悉的就是上面那些點:Python語言很容易入門,有代碼基礎,很簡單webservice:只需要會搭建就可以了,很簡單,教程非常多,Apache比較傳統資料多,nginx比較新效率高,2選1就可以了,現階段不需要考慮性能,如果是mac,自帶了Apache。框架:flask比較靈活,django比較大而全,目前這兩個框架最主流資料多社區支持多,喜歡靈活就前者喜歡大而全就後者,個人喜歡flask。資料庫:mysql無異議伺服器:本地調試的話,本機起個Apache就可以了,要部署的話就阿里雲吧,買個入門的linux很便宜很方便,如果就個人玩玩,只需要買ecs(linux虛擬機),在裡面部署個mysql就可以了,如果要正經一點,就買ecs+rds,rds就是阿里雲提供的獨立的mysql服務。基本知識點就這些。2、選擇什麼樣的python框架開發,這個框架的優勢?如上。3、如何部署伺服器?本地伺服器調試,以及公網伺服器部署?
對個人項目來說,Python的部署相比java簡單很多,在部署方面跟php比較類似,只需要把代碼包放到apache的項目目錄下就可以了,不過你在開發過程中肯定需要用到各種包,比如flask框架包、MySQL-python之類的,需要的安裝一下就可以。你可以寫一個shell腳本就可以了。4、如果使用python框架開發移動後台服務,在開發源碼內使用哪種框架?mvc還是其它的,比如我返回json數據,每次json對象最外層有一些相同的東西,該如何處理?flask之類的框架沒有提供嚴格的mvc約束,在寫代碼的時候自己有這個意識就好,小項目的話其實只需要把view區分好就好,m和c業務不複雜的話可以不用太區分,等你駕馭了這個框架了,再優化一下m和c,是很簡單的事情。json的包裝是需要自己寫的,一般就寫一個通用方法,傳入對象,返回json格式就好了。最外層的相同東西這種處理起來有很多種方式,簡單的你可以定義一個通用對象,這個對象就是用來跟api打交道的,裡面有一些通用屬性,比如errMsg,errCode之類的,再放一個對象屬性,用來存放你的業務結果對象,然後每次把業務結果對象set到這個通用對象中,把通用對象轉成json返回給客戶端就可以了。5、python的後台服務最大能支持多大的pv量會嚴重影響用戶體驗性能?不需要考慮這個,阿里雲最基礎的伺服器配置就可以輕鬆支撐幾十萬量級用戶的網站(不是幾十萬並發,這個量級的網站並發不算高)6、如何兼顧 網頁前端以及移動端 開發的後台?這個我理解應該是跟前端關係更大,不需要考慮兼顧,跟Python無關,通過js css適配就好了吧,不知道要表達的是不是這個意思。7、有沒用相關的案例,即用python開發的移動後台?有沒有該問題的開源項目?無,自己寫一個最簡單的就可以了,Python web入門很簡單。
給一套我用過的解決方案,用來開發過web項目(網頁 + ios)和手游項目(ios + 安卓),都是一套後台對應多種前端平台:
web框架:Django
Django 是一套相對全(zhong)面(yong)的框架,基本你要的功能都有,文檔很細緻,上手比較容易,開發效率比較高。自帶 auth、session、orm、admin 等功能,尤其是 admin,如果要求不是太高,用自帶的後台管理系統就能省下很多開發工作。web server:nginx
相對 apache 較輕,簡潔。用來部署 django 也比較方便,可參考 Setting up Django and your web server with uWSGI and nginx資料庫:mysql
這個不限定,看業務需求和開發者喜好。當然如果用了 django,自然最好選一個 orm 支持比較好的。RESTful API:Tastypie
基於 Django 的 RESTful API。Django 本身作為一個 web 框架,返回的結果默認是渲染好的 html 文本。藉助 Tastypie,可以比較方便的製作 json 數據格式的介面,將前後端解耦合。這樣不管是網頁、iOS 還是 Android,都可以用同樣的介面。1、如果使用python語言,需要學習哪些知識?
python 語言本身,使用的框架,web 開發的通用知識,比如 HTTP 請求的處理流程、RESTful、OAuth 等。
2、選擇什麼樣的python框架開發,這個框架的優勢?
見上文。
3、如何部署伺服器?本地伺服器調試,以及公網伺服器部署?
Django 自帶本地調試服務,開發的時候用區域網地址調試即可。公網部署見上文。
4、如果使用python框架開發移動後台服務,在開發源碼內使用哪種框架?mvc還是其它的,比如我返回json數據,每次json對象最外層有一些相同的東西,該如何處理?
Tastypie 可以處理掉生成 json 數據時的很多體力活。
5、python的後台服務最大能支持多大的pv量會嚴重影響用戶體驗性能?
這個沒法給確切答案,具體情況會受機器硬體條件(CPU、內存、I/O)、網路帶寬、代碼質量、架構設計,甚至配置參數的影響。目前有較大型網站使用 python,並正常運作(參見 有哪些大型公司在使用 Python?有哪些知名項目是主要由 Python 寫成的? - Crossin 的回答),所以 python 本身不是問題。實踐時,做好壓力測試和上線後的性能監控,找出瓶頸不斷優化是王道。
6、如何兼顧 網頁前端以及移動端 開發的後台?
通過 API,後台無需知道是什麼平台在使用它。
7、有沒用相關的案例,即用python開發的移動後台?有沒有該問題的開源項目?
通常框架會自帶測試案例。真實案例開源的暫時不知道。如果哪天我把之前寫的開源了,再回來修改答案。
PYTHON可以用FLASK開發RESTFUL風格的API service。
可以參考這篇文章:
http://blog.miguelgrinberg.com/post/designing-a-restful-api-with-python-and-flask不過你要兼顧網頁版本移動端開發。PYTHON就不太合適。你應該用Ruby on Rails。原生完美支持html、json、js、xml等方式的請求的響應。做RESTful Web service強大又方便。我公司專做python外包項目。主要針對金融銀行業務。對這個問題,應該看應用場景來得出一個最佳實踐。首先,是企業應用開發。企業開發經常需要面對變動。需要穩定性和可靠性,同時代碼需要凸顯業務,減少有關計算機的部分,這在java叫做面向方面編程,其實就是增加抽象程度而已。比如類型轉化,許可權管理,就應該在代碼中盡量避免出現。這裡我們使用的方案是pyramid框架+postgresql資料庫,如果圖方便就使用gunicorn來管理進程,比較uwsgi來說更加方便,而且性能沒有任何問題。如果考慮性能還有其他方案。python與pg資料庫簡直就是天作之合!我們用pyramid框架寫的代碼讀起來就好像一個flat文件,幾乎一點縮進都沒有。我們的口號是沒有縮進!這在java來說,是不可想像的事情。tornado也是一個選擇,但是應該特別謹慎的使用。因為這是一個非同步框架,如果新手很容易造成阻塞或者代碼亂成一團糟。在實際項目中,我們還經常使用twisted,看應用場景,twisted可以說是一個工業級的框架,我們給一個銀行的項目中,twisted的進程曾經連續幾年穩定可靠的運行,實在太好用了。
而在一個電信的項目中,做一個伺服器,原定5個人月的一個網路伺服器項目,不到3天就搞定了!
我們還經常用到bottle這個框架,在某些業務場景中還是很好用的,比如在小型機端嵌入twisted中做web監控。相比twisted,gevent更適合做一個客戶端的框架,比如同時ping一萬台主機,或者同時snmpget一萬台主機,使用gevent就比使用twisted在編程上容易很多,一萬台主機的掃描可以瞬間完成。在非同步架構中,twisted更容易來編寫伺服器,而gevent則更容易用來做客戶端。我們的一個監控產品中,就同時使用了這兩種技術,使用twisted來做被動監控伺服器。使用gevent來做輪詢掃描器。django反而很少用到,它的orm實在太差了。我們要麼使用sqlalchemy,要麼就是使用自己封裝的一個orm庫,速度要快的多,但是簡單好用。而flask其實我們也較少用到,這個組織出的jinja2模板反而用到各個地方。django和flask這種框架,我們定義為互聯網級,可能學習起來容易,但是穩定性和性能距離其他幾個文中介紹到的框架還有一定的差距。~~~~~~~~~~~~~~~~~~~~~本著對客戶負責的態度,我們在項目選擇中盡量避免使用java和C++的組件。我們認為,使用這些組件是對客戶不負責任的態度。比如mongodb和mysql,他們能解決的問題還沒有造成麻煩多。當然,QT和lucene還是不錯的。所有,我們主要使用的技術是這樣的:Pyramid, twisted, jinja2, redis, pandas,有的時候還會用rabbitmq還有需要掌握的技術呢,就是restful三級架構。理解POST和PUT方法的差別。前端如果沒有更高的要求,就直接使用html5+bootstrap來解決,界面簡潔美觀速度夠快。在通信方面,如果對外發布,就使用json,如果不對外發布,就使用messagepack總之,應該根據不同的業務選擇不同的方案,要知道,在軟體這個領域,沒有萬能的靈丹妙藥。謝邀,如果不複雜,後端直接用postgrest https://github.com/begriffs/postgrest 即可。稍微複雜點的,那就flask,django都行,快速實現。
居然有人邀請我回答,甚是激動!
我後台開發水平一般般除了語言層面的差別,使用Python做後台開發和其他語言開發後台,用到的知識其實是差不多了。除了上面回答提到的數據結構和演算法、設計模式、操作系統、計算機網路這些通用的之外,我覺得還需要了解一些後台開發里的基礎概念:IO模型基本概念:非同步,同步,阻塞,非阻塞,多路復用(epoll)並發模型:多進程模型,多線程模型,Reactor模型Http協議:協議有哪些基本欄位,GET和POST的區別web伺服器原理:建議去看看tinyhttp的源碼負載均衡:一些基本的負載均衡演算法網關協議:CGI,FastCGI,WCGI進程間通訊:管道,消息隊列,信號等其他:session,cookie,Restful APIPython框架用過一個:tornado。tornado框架集成了Web伺服器,它是採用目前比較流行非同步非阻塞並發模型,性能不錯,再加上Python的協程,可以實現一個高性能的web後台。如果使用tornado框架,由於tornado是單進程,不能利用多核CPU,所以部署的時候,可以每個CPU分配一個進程,supervisor守護tornado進程。同時建議使用nginx做前端做負載均衡和管理靜態資源。
至於Python性能問題,如果是IO密集型應用,可以考慮用非同步IO提高性能。如果是計算密集型,那性能的關鍵點就用C/C++寫吧,Python調用C/C++還是比較方便的。看需求,簡單的需求可以直接用Flask,再配上Flask Restful 或者Flask Restless ,ORM上Flask SqlAlchemy 或者直接用SqlAlchemy,在弄個Flask Admin加上角色許可權管理。
可以使用flask框架開發REST API,無論什麼平台都能用
移動App發展,這是未來的趨勢。不需要學習Java 和C語言!
你只需要掌握JavaScript!我們可以使用React Native, Ionic, Cordova 等框架來構建移動App
現階段,現在你需要考慮什麼?
專註於你的事業
回去學習更多的數據結構
跟進現在的新技術
學習一門高級語言,類似於Java, C語言
我們公司用的Flask!感覺比較的靈活!理念也是比較先進!
直接Flask即可,Flask的代碼也比較好,可以深入學習研究。基於Flask做簡單的定製,足夠了。
謝邀 看樓上已經回答的很多了~
推薦閱讀:
※怎麼做好互聯網公司的技術團隊負責人?
※vysor的實現原理是什麼?
※如何看待谷歌要求OEM廠家保留並不得修改安卓6.0的Doze省電模式?
※請教手機製造廠商——手機屏幕顯示的顏色深淺(黑白)與耗電量的關係是怎樣的?
※Android上有哪些比較好的開源 UI 組件?