如何扩展受CPU约束的Twisted应用程序?

时间:2019-04-02 21:19:33

标签: python twisted scaling

我正在处理一个扭曲的Web应用程序,该应用程序上传文件并对其进行加密,然后将url +密钥返回给用户。

我的任务是扩展此应用程序。当前有3-4个以上的并发上传请求时,性能将显着下降。

我不是Twisted专家,但我认为这是由于它在单个python进程中运行,是高CPU应用程序和GIL吗?

我该如何扩展呢?

如果这是诸如Flask之类的不同框架,我只是将uwsgi放在它前面,并扩展进程数。 Twisted是否可以使用类似的工具?如果可以,通常使用什么工具?

1 个答案:

答案 0 :(得分:0)

如果您认为可以将uwsgi放在应用程序的前面,那么我想它几乎是无共享的。因此,您可以运行该程序的多个实例,并从每个实例中获得核心性能。

对于如何确切地运行多个实例,有几个非常明显的选择。您可能在前面有一个负载均衡器。您可以让进程共享一个监听端口。可能还有更多可能性。

由于您的协议似乎是HTTP,因此任何旧的HTTP负载均衡器都应该适用。它不必是Twisted或基于Python的本身(尽管当然可以)。

如果您希望共享一个侦听端口,则Twisted的API可以在进程之间传递文件描述符(IReactorSocket),并可以启动从父进程继承文件描述符的新进程(IReactorProcess)。