Python Web Backend



我是一名经验丰富的Python开发人员,开始从事web服务后端系统。该系统(不断地)从web向a提供数据MySQL数据库。该数据稍后由前端端(在这里)显示前端和后端之间没有连接)。后端系统不断从网上下载航班信息(部分)数据通过api获取,有些通过下载和解析获取文本/XLS文件)。我已经有了一个下载数据的脚本,解析它,并将其插入MySQL数据库-所有这些都在一个大循环中。的前端端只是一堆PHP页面,正确显示通过查询MySQL服务器获取。

这是至关重要的,这个web服务是健壮的,强大的和可靠的。因此,我一直在寻找合适的方法来设计它,并遇到了以下部分来组成我的系统:
1) django作为一个框架(用于HTTP连接和使用活塞)
2)活塞作为API提供者(这是伟大的,因为这样我的前端可以使用API,而不是实际运行查询)
3) SQLAlchemy作为数据库层(我不喜欢使用django ORM时得到的小控制,我希望能够运行更复杂的数据库框架)
4) Apache与mod_wsgi运行一切
5)最后,芹菜(或django-cron)实际上运行我的无限循环,从网络上提取数据-希望以某种有组织的任务格式)。这是我最不确定的部分,任何提示都很感激。

这一切听起来都很棒。我以前用django写网站(又名返回数据的请求处理程序)。然而,除了使用芹菜或django-cron之外,我真的看不出它如何适合一个常量数据提供后端的角色。

我只是想让你们听听你们的想法/评论。您的任何输入/指向文档和/或其他库将非常非常感激!

如果你打算使用SQLAlchemy,我会避免使用Django:如果你正在使用整个堆栈,Django是很好的,但是因为你即将剥离模型,我不认为使用它有多大价值,我会看看另一个选择(也许Pylons或纯旧的CherryPy会做)。

如果FEs不运行查询,而只询问API提供程序,情况就更糟了。

至于健壮性,我更满意于用supervise启动单独的fcgi进程,并使用更轻量级的web服务器(轻量级/nginx),但这是个人喜好的问题。

对于"无限循环"部分,它取决于您想要的行为:如果源有问题,您只是想跳过该步骤还是在源备份时多次重复该步骤?

周期性任务可能对前者很好,而cron只会产生抓取任务对后者更好。

最新更新