python - 帮我选择一个网络服务平台来扩展现有的 python 网络服务

标签 python web-services performance scalability

我有一个简单的网络服务,我需要大幅扩展。

我正在尝试决定在各种网络框架、负载平衡器、应用程序服务器(例如 Mongrel2、Tornado 和 nginx、mod_proxy)中选择哪个位置。

我有一个现有的 Python 应用程序(目前通过 BaseHTTPServer 公开)接受一些 JSON 数据(每个请求大约 900KB),并返回一些 JSON 数据(大约 1k)。处理是通过算法进行的,并混合使用 Python 和一些 C(通过 Cython)完成。

这已经进行了大量优化(从 >1 小时减少到每个作业 1.1 秒)。但我无法进一步优化它。虽然我重写了一些对线程更友好的东西,但我需要水平扩展(可能是 ec2)。

没有 session 或状态,但应用程序的启动时间很慢(即使有 pickling 和 cashing)。加载所有源数据大约需要 3 秒。一旦运行,每个请求大约需要 1.1 秒。我

也许我可以启动多个副本然后反向代理它们?也许我可以在其中一个框架中做一些时髦的工作池?但我仍然处于未知的未知之中。

最佳答案

首先,您应该将网络服务层与数字运算分离。使用外部作业队列(例如 http://celeryproject.org/ )来卸载 Web 前端。然后您可以相互依赖地缩放每个部分。

您应该寻找 IaaS 类型的云提供商(EC2、Rackspace、Linode、Softlayer 等),您应该能够在其中自动添加节点(首选方式是启动一些预配置的镜像以最大限度地减少节点设置时间)。

关于python - 帮我选择一个网络服务平台来扩展现有的 python 网络服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6357606/

相关文章:

c# - 使用 xml 存储创建 .net webservice stub

performance - Postgres 中有多少个表分区太多?

Python2.6十进制转八进制

python - 用 Python 在文本文件中写入生成的数字

c++ - 为瘦客户端设计客户端(胖)/服务器 + 额外的 REST API

web-services - 比较和对比 REST 和 SOAP Web 服务?

mysql - 我应该在SqlAlchemy中使用relationship()吗?

cocoa - 使用 NSMutableDictionary 与 NSMutableArray 造成的性能损失>

python - 在 Pandas 中,有没有办法将一个单元格除以一列中的所有其他单元格?

python - 安装 xlwt