Python网页后端

1 投票
1 回答
1920 浏览
提问于 2025-04-16 15:50

我是一名有经验的Python开发者,最近开始做一个网络服务的后台系统。这个系统会不断地从网上获取数据,并存储到MySQL数据库中。之后,这些数据会被前端展示(前端和后台之间没有直接的连接)。后台系统会持续从网上下载航班信息(有些数据是通过API获取的,有些则是下载和解析文本或xls文件)。我已经有一个脚本可以下载数据、解析数据,并将其插入到MySQL数据库中——这一切都在一个大的循环中完成。前端只是一些PHP页面,通过查询MySQL服务器来正确展示数据。

确保这个网络服务的稳定性、强大性和可靠性是非常重要的。因此,我在研究如何设计这个系统,并发现以下几个部分可以组成我的系统:
1) 使用Django作为框架(用于HTTP连接和使用Piston)
2) 使用Piston作为API提供者(这样我的前端可以使用API,而不需要直接运行查询)
3) 使用SQLAlchemy作为数据库层(我不喜欢使用Django ORM时控制权有限,我想要一个更复杂的数据库框架)
4) 使用Apache和mod_wsgi来运行所有内容
5) 最后,使用Celery(或django-cron)来实际运行我的无限循环,从网上拉取数据——希望能以某种有组织的任务格式进行。这部分我最不确定,任何建议都非常感谢。

这一切听起来都不错。我之前用Django写过网站(也就是处理请求并返回数据的程序)。不过,除了使用Celery或django-cron,我真的不太明白它如何适合一个持续提供数据的后台角色。

我只是想和大家讨论一下,听听你们的想法和意见。任何建议、文档链接或其他库的推荐都非常非常感谢!

1 个回答

0

如果你打算使用SQLAlchemy,我建议你不要使用Django。Django在你使用整个框架的时候还不错,但如果你打算只用它的模型部分,我觉得用它的价值不大,可能可以考虑其他选项,比如Pylons或者老牌的CherryPy。

尤其是如果前端不直接运行查询,而只是向API提供者请求数据的话。

至于系统的稳定性,我更喜欢启动独立的fcgi进程,并使用更轻量级的网络服务器(比如lighttpd或nginx),不过这主要是个人喜好。

关于“无限循环”的部分,这要看你想要什么样的行为:如果源头出现问题,你是希望跳过这一步,还是在源头恢复后多次重复这个步骤?

定时任务可能适合前者,而简单地启动抓取任务的cron则更适合后者。

撰写回答