【发布时间】:2011-06-05 19:44:36
【问题描述】:
所有人:我正在寻求意见/指导/和设计理念。我的目标是找到一种精简但可靠的方法来从 HTTP POST 中获取 XML 有效负载(这部分没有问题),解析它,并异步生成一个相对长寿的进程。
生成的进程是 CPU 密集型的,将持续大约三分钟。一开始我预计不会有太多负载,但是随着流量的增加,我很可能需要在服务器上横向扩展它。
我真的很喜欢 Celery/Django 堆栈用于此用途:它非常直观,并且具有所有内置框架来完全满足我的需要。我满怀热情地开始了这条道路,但很快我发现我的 512MB RAM 小型云服务器只有 100MB 的可用内存,并且我开始感觉到,一旦我的所有进程全速运行,我就会遇到麻烦。此外,它还有几个活动部分:RabbitMQ、MySQL、cerleryd、ligthttpd 和 django 容器。
我绝对可以增加我的服务器的大小,但我希望在这个项目的早期阶段将我的成本降到最低。
作为替代方案,我正在考虑使用 twisted 进行流程管理,以及远程系统的透视代理(如果需要)。但至少对我来说,虽然 twisted 很出色,但我觉得我在这条路上做了很多事情:编写协议、回调管理、跟踪工作状态等。这里的好处非常明显——出色的性能,更少的移动部件和更小的内存占用(注意:我需要验证内存部分)。为此,我非常偏向于 Python - 它比其他替代品更让我愉快:)
我非常感谢您对此的任何看法。我担心会在错误的轨道上开始工作,并且稍后在生产流量上重做这件事会很痛苦。
-马特
【问题讨论】:
-
你项目的目标是什么?学术的?爱好者网站?互联网创业?
-
这将是一项创收服务,或者至少这是我们的目标。
-
在这种情况下,我会将您指向这篇文章:teddziuba.com/2010/12/…
-
请注意,Celery 2.2 将支持使用 eventlet/gevent 而不是进程来进行并发,这可能会减轻您的记忆恐惧。
-
@MattH,感谢您的链接,我同意这种方法,我认为这是最有意义的。
标签: python django asynchronous twisted