【发布时间】:2012-07-08 17:26:45
【问题描述】:
我有一个 HTTP 服务器,它执行一些 IO 工作,然后执行一些 CPU 绑定的工作 (PIL),然后回复数据(兆字节左右)。
(a) 我的第一个想法是这样的:一个基于 Twisted 的服务器和 IO 进程,以及几个用于 PIL 东西的进程,带有队列。
如果这种架构是合理的,那么可能有一个库可以做到这一点:Twisted 的多进程队列。但是,我在 Twisted 中并没有真正的经验,对其社区一无所知,所以我发现的唯一东西是 ampoule,我找不到任何文档和描述都无法说服我这是适合工作的工具。
(b) 另一个想法是只在多个线程中运行多个服务器,IO 和 CPU 的东西都在每个线程中运行。这似乎很愚蠢,因为 CPU 的东西会阻塞,但也许我并没有真正理解它。
所以,问题:
- 这些架构是否合理?
- 您将如何实现它(使用
Twisted+ampoule或什么?) - 对于 (a),如何将大量数据从“worker”发送到服务器线程?或者我可以告诉工作人员以某种方式直接写入响应?
- 多少“工人”才算合理?
【问题讨论】:
标签: python queue twisted multiprocessing cpu-usage