Home  >  Article  >  Backend Development  >  如何用python开发移动App(android、iOS)后台?需要掌握哪些技术?

如何用python开发移动App(android、iOS)后台?需要掌握哪些技术?

WBOY
WBOYOriginal
2016-06-06 16:22:143190browse

本人会移动开发,略知后台开发,不过一般公司都采用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+jenkins

4、如果使用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 有哪些好的学习资料或者博客? - 彭泉鑫的回答 给一套我用过的解决方案,用来开发过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做后台开发和其他语言开发后台,用到的知识其实是差不多了。除了上面回答提到的数据结构和算法、设计模式、操作系统、计算机网络这些通用的之外,我觉得还需要了解一些后台开发里的基础概念:
IO模型基本概念:异步,同步,阻塞,非阻塞,多路复用(epoll)
并发模型:多进程模型,多线程模型,Reactor模型
Http协议:协议有哪些基本字段,GET和POST的区别
web服务器原理:建议去看看tinyhttp的源码
负载均衡:一些基本的负载均衡算法
网关协议:CGI,FastCGI,WCGI
进程间通讯:管道,消息队列,信号等
其他:session,cookie,Restful API

Python框架用过一个: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 ,辅之以Flask SqlAlchemy 或者直接用SqlAlchemy,数据库Mysql就可以,在弄个Flask Admin加上角色权限管理。就要差不多了
往大说了,要考虑并发,那就很麻烦了,异步的tonardo 就是个不错的选择,还可以用redis做分布式缓存。不过我也没用过,哈哈,也只真正做过基于Flask 的Rest风格的Api 谢邀,如果不复杂,后端直接用postgrest github.com/begriffs/pos 即可。
稍微复杂点的,那就flask,django都行,快速实现。 PYTHON可以用FLASK开发RESTFUL风格的API service。
可以参考这篇文章:
blog.miguelgrinberg.com

不过你要兼顾网页版本移动端开发。PYTHON就不太合适。你应该用Ruby on Rails。原生完美支持html、json、js、xml等方式的请求的响应。做RESTful Web service强大又方便。 可以使用flask框架开发REST API,无论什么平台都能用 最近正在看python自动化开发,alex老师的教程,感觉你可以看看 我们公司用的Flask!感觉比较的灵活!理念也是比较先进! 我公司专做python外包项目。
对这个问题,应该看应用场景来得出一个最佳实践。
首先,是企业应用开发。企业开发经常需要面对变动。需要稳定性和可靠性。这是我们使用的方案是pyramid框架+postgresql数据库,如果图方便就使用uwsgi来管理进程,如果考虑性能还有其他方案。python与pg数据库简直就是天作之合!
tornado也是一个选择,但是应该特别谨慎的使用。因为这是一个异步框架,如果新手很容易造成阻塞。
在实际项目中,我们还经常使用flask和twisted,看应用场景,twisted可以说是一个工业级的框架,我们给一个银行的项目中,twisted的进程曾经连续几年稳定可靠的运行,实在太好用了。
我们还经常用到bottle这个框架,在某些业务场景中还是很好用的。
django反而很少用到,它的orm实在太差了。我们要么使用sqlalchemy,要么就是使用自己封装的一个orm库,速度要快的多,但是简单好用。
总之,应该根据不同的业务选择不同的方案,要知道,在软件这个领域,没有万能的灵丹妙药。
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn