Python后端设计模式

2024-04-29 19:48:50 发布

您现在位置:Python中文网/ 问答频道 /正文

我现在正在开发一个大型后端系统,用于实时和历史跟踪web服务。
我对Python有丰富的经验,并打算将其与sqlalchemy(MySQL)一起使用来开发后端。
我没有开发健壮和可持续的后端系统的任何主要经验,我想知道你们是否可以为我指出一些有关后端设计模式的文档/书籍?我基本上需要通过实时查询不同的服务(通过HTML/SOAP/JSON)将数据馈送到数据库,并保存这些数据的历史记录。在

谢谢!在


Tags: 数据文档web数据库json历史记录sqlalchemyhtml
2条回答

你能更精确地定义“后端”吗?通常,在web开发中,我遵循MVC的结构,其中我的“前端”、html/css/js和处理显示的代码都与我的“后端”模型(业务对象和数据持久性;即数据库)紧密耦合。在

我喜欢Django的模型/视图/模板方法:

http://docs.djangoproject.com/en/dev/faq/general/#django-appears-to-be-a-mvc-framework-but-you-call-the-controller-the-view-and-the-view-the-template-how-come-you-don-t-use-the-standard-names

但是,您还没有真正定义“后端”的含义,因此很难就设计模式给出建议。你说你对Python很有经验,你以前开发过数据库驱动的web应用程序吗?在

更新

根据你的评论,我帮不上什么忙,因为我没有太多的经验做这样的“后台”。然而,考虑到您是如何从web上获取资源的,您的延迟/吞吐量将相当高。因此,为了提高整体效率,您需要一个能够以相当高的并发性运行多个线程或进程的东西。我建议你看看这个帖子上的答案(并搜索类似的答案):

Concurrent downloads - Python

特别是,我发现递归web服务器的示例和下面的示例可能是解决方案的一个非常好的开端:

http://eventlet.net/doc/examples.html#recursive-web-crawler

至于将这个想法转化为一个健壮的/连续的过程,这在很大程度上取决于你的平台和你处理错误的能力。基本上:

  • 在循环中运行它,并确保处理任何可能抛出的错误
  • 让某种类型的进程监视您的工作进程,以便在它挂起或死亡时终止/重新启动它
  • 确保nagios停止监视(如果你的解决方案停止工作)

保持事物“健壮”的最好方法之一是使它们尽可能简单(而不是简单化)。如果你所做的只是从web上获取信息,以某种方式进行解析,然后将这些信息存储在数据库中,那么就尽量让这个过程保持简单。不要为了使它更健壮而增加不必要的复杂性。如果你最终得到一个200行脚本,你就可以做太好了!在

使用Apache、Django和活塞。在

使用REST作为协议。在

写尽可能少的代码。在

Django模型、表单和管理界面。在

你的资源活塞包装机。在

相关问题 更多 >