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