【问题标题】:How to scale a CPU bound Twisted application?如何扩展受 CPU 限制的 Twisted 应用程序?
【发布时间】:2019-04-02 21:19:32
【问题描述】:

我正在开发一个扭曲的网络应用程序,它上传文件并加密它们,将 url+key 返回给用户。

我的任务是扩展此应用程序。当并发上传请求超过 3-4 个时,性能会明显下降。

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

我该如何进行扩展?

如果这是一个不同的框架,比如 Flask,我只会将 uwsgi 放在它前面并扩展进程的数量。对于 Twisted 是否会有类似的工作?如果可以,通常会使用哪些工具?

【问题讨论】:

    标签: python twisted scaling


    【解决方案1】:

    如果您认为可以将 uwsgi 放在应用程序前面,我想它非常接近 shared-nothing。因此,您可以运行程序的多个实例,并从每个实例中获得一个核心的性能价值。

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

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

    如果您希望共享一个监听端口,Twisted 提供了用于在进程之间传递文件描述符 (IReactorSocket) 和启动从父进程 (IReactorProcess) 继承文件描述符的新进程的 API。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-03-10
      • 1970-01-01
      • 2011-06-25
      • 1970-01-01
      • 2011-06-22
      • 2013-05-04
      • 2018-09-24
      相关资源
      最近更新 更多