Python 后端设计模式
我现在正在为一个实时和历史跟踪的网络服务开发一个大型后台系统。
我对Python非常熟悉,打算用它和sqlalchemy(MySQL)来开发这个后台。
不过我在开发稳健和可持续的后台系统方面经验不多,所以想请大家推荐一些关于后台设计模式的文档或书籍给我。我的主要需求是实时从不同的服务(通过HTML / SOAP / JSON)获取数据,并将这些数据存入数据库,同时还要保存这些数据的历史记录。
谢谢!
2 个回答
使用Apache服务器、Django框架和Piston工具。
使用REST作为通信协议。
尽量少写代码。
利用Django的模型、表单和管理界面。
使用Piston来处理你的资源。
你能更准确地定义一下“后端”吗?通常在网页开发中,我会遵循一种类似MVC的结构,其中我的“前端”部分,包括HTML、CSS、JavaScript,以及处理这些内容的代码,和我的“后端”模型(商业对象和数据持久化,也就是数据库)是松散耦合的。
我喜欢Django的模型/视图/模板方法:
不过,你并没有真正定义“后端”是什么意思,所以很难给出设计模式的建议。你说你在Python方面有经验,那你之前有没有开发过数据库驱动的网页应用呢?
更新
根据你的评论,我可能帮不了你太多,因为我在做那种“后端”的经验不多。不过,既然你是从网上获取资源,你的延迟和吞吐量会比较高。因此,为了提高整体效率,你需要有能够同时运行多个线程或进程的东西。我建议你看看这个讨论中的回答(并搜索类似的问题):
具体来说,我发现递归网页服务器的例子和后面的例子可能是你解决方案的一个很好的起点:
http://eventlet.net/doc/examples.html#recursive-web-crawler
至于如何把这个想法变成一个稳健的、持续的过程,这很大程度上取决于你的平台以及你处理错误的能力。基本上:
- 在一个循环中运行,并确保处理可能出现的任何错误
- 有某种进程监控你的工作进程,如果它挂掉或死掉就杀掉/重启它
- 确保有监控解决方案来通知你如果它停止工作(比如nagios等)
保持事物“稳健”的一个好方法是尽可能简单(但不是过于简单)。如果你只是从网上获取信息,以某种方式解析,然后把这些信息存储到数据库中,那就尽量保持这个过程简单。不要为了让它更稳健而增加不必要的复杂性。如果你最终得到一个200行的脚本,能完成你想要的,那就太好了!